- 博客(27)
- 收藏
- 关注
原创 Leetcode: House Robber
class Solution {public: int rob(vector &num) { if (num.empty()) { return 0; } if (num.size()==1) { return num[0]; } int first = num[0]; int second = num[1]; int res = max(first, seco
2015-04-01 00:07:02
456
原创 LeetCode: Minimum Window Substring
就题目里那点描述,根本说不清需求,完全是一个个case调出来的。。。bool isWindow(array& flags, array& counter){ for (int i = 0; i < 256; i++){ if (flags[i]!=0 && counter[i]<flags[i]){ return false; } } return true;}
2015-03-13 00:53:45
481
原创 LeetCode: Reverse Bits
uint32_t reverseBits(uint32_t n) { uint32_t a = 0x80000000; uint32_t b = 0x1; while (a>b){ uint32_t atmp = n&a; uint32_t btmp = n&b; if (atmp != 0){ n = (n|b); } else{ n = (n&~b)
2015-03-09 23:56:40
789
原创 LeetCode: Repeated DNA Sequences
一定要用gcc调试。。。贪图vs的编辑方便,在本机上都过的case就是提交不能过。。。 换了gcc才发现问题。static const char digit2char[4] = { 'A', 'C', 'G', 'T' }; //A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,Tstatic con
2015-03-06 01:35:17
404
原创 LeetCode: Rotate Array
......具体可以看stl_algo.h,有forward, bidirectional, random iterator版本。我不明白的是forward_iterator版本: _ForwardIterator __first2 = __middle; do { std::iter_swap(__first, __first2)
2015-03-05 22:11:12
288
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-03-05 00:42:22
311
原创 为什么rvalue reference是lvalue
gcc-4.9.2\libstdc++-v3\include\bits\stl_vector.h的代码: /** * @brief %Vector move constructor. * @param __x A %vector of identical element and allocator types. * *
2015-01-29 23:47:15
492
原创 Effective Modern C++ 笔记 第七章 The Concurrency API
Item 35: Prefer task-based programming to thread-based. 241Item 36: Specify std::launch::async if asynchronicity is essential. 245Item 37: Make std::threads unjoinable on all paths. 250Item
2015-01-29 01:00:41
543
原创 LeetCode: Dungeon Game
int calculateMinimumHP(vector > &dungeon) { int m = dungeon.size(); int n = dungeon[0].size(); vector> results; for (int i = 0; i < m; i++){ results.push_back(vector(n, 0)); } for (int i = m -
2015-01-23 00:27:12
752
原创 Effective Modern C++ 笔记 第六章 Lambda Expressions
Item 31: Avoid default capture modes.Item 32: Use init capture to move objects into closures.Item 33: Use decltype on auto&& parameters to std::forward them.Item 34: Prefer lambdas to
2015-01-22 22:57:17
464
原创 LeetCode: Largest Number
string largestNumber(vector &num) { string result; if (num.size()==0){ return result; } bool allZero = true; vector strNum; for (auto& i:num){ strNum.push_back(to_string(i)); if (i != 0){
2015-01-20 00:23:47
410
原创 LeetCode: Binary Tree Postorder Traversal
vector postorderTraversal(TreeNode *root) { vector res; if (!root){ return res; } stack nodes; TreeNode* cur = root; TreeNode* pre = NULL; nodes.push(cur); if (cur->right){ nodes.push(cur-
2014-12-05 00:02:28
269
原创 LeetCode: Binary Tree Preorder Traversal
vector preorderTraversal(TreeNode *root) { vector res; if (!root){ return res; } stack nodes; nodes.push(root); while (!nodes.empty()){ TreeNode* cur = nodes.top(); nodes.pop(); res.push
2014-12-04 23:58:15
276
原创 LeetCode: Reorder List
很简单,就是最中间的node处理要注意下。。。直接代码。ListNode* reverseList(ListNode* head){ if (!head){ return NULL; } if (!head->next){ return head; } ListNode* pre = NULL; ListNode* cur = head; while (cur->next
2014-12-04 20:48:16
235
原创 LeetCode: Merge Two Sorted Lists
随手点进去forum, 看了两个答案,差不多的,都是一边merge value一边new ListNode。。。 难道不看题么?Merge two sorted linked lists and return it as a new list. The new list should be made bysplicing together the nodes of the first tw
2014-12-04 00:47:25
293
原创 Effective Modern C++ 笔记 第四章 Smart Pointers
Item 18: Use std::unique_ptr for exclusive-ownership resource management.Item 19: Use std::shared_ptr for shared-ownership resource management.Item 20: Use std::weak_ptr for std::shared_pt
2014-12-02 00:50:33
466
原创 LeetCode: Intersection of Two Linked Lists
赶新鲜,和solution的解法不太一样,解三元一次方程组。。。简而言之,list A的长度是x+z, listB的长度是y+z. z为两个list共同部分的长度。把A reverse一下,可以得到x+y的值,然后算一下就都出来了。ListNode* reverseList(ListNode* head){ if (!head){ return NULL; } if (!
2014-11-28 01:14:02
400
原创 SFINAE 极简介绍
首先推荐讲SFINAE我认为最好的两个资料,一个是cppreferenceSFINAE,一个是channel9上Stephan T Lavavej讲的三个series:Core CPP,STL, Advacned STL其中的某一集。。。的确忘了是哪集了。这两个资料有深入有浅出,最重要的是讲明白了SFINAE的本质,而不是上来就一段代码告诉你这个就是SFINAE,看完了就看完了而已,完全和其他知识
2014-11-27 23:43:59
1309
原创 Effective Modern C++ 笔记 第五章:Rvalue References, Move Semantics, and Perfect Forwarding
前面4章慢慢补。。。因为想起来写笔记的时候已经读到第五章了。说白了,笔记什么的也不是很必要,Scott Meyers和以前一样,在每个item的最后列出了本item的要点,这就是笔记内容啊。。。第五章如标题,围绕rvalue references(右值引用)以及延伸出来的两个用途move semantics(移动语义),perfect forwarding(完美转发)来组织的。详细
2014-11-26 23:17:46
726
原创 LeetCode: Copy List with Random Pointer
题目很简单,直接贴答案:RandomListNode *copyRandomList(RandomListNode *head) { if (!head){ return NULL; } RandomListNode* cur = head; RandomListNode* result = new RandomListNode(head->label); RandomL
2014-11-25 22:35:55
311
原创 LeetCode: Max Points on a Line
这个设计test case是个好题目。本来的想法是以斜率为key,做hashtable计数,试了几次行不通。似乎改造下这个方案也是可行的。后来干脆按照line来计数。最主要的是点重复这个事情不好弄,干脆吧点集预处理下。发现leetcode论坛里有个类似的思路,不过那个解法错了。代码有点丑,如下:struct Point { int x; int y; Point() :
2014-11-25 20:54:03
282
原创 LeetCode: Maximum Product Subarray
只贴个solution,很容易看懂。jianeryan int maxProduct(int A[], int n) { if (n == 1){ return A[0]; } int maxV = A[0]; int minV = A[0]; int result = A[0]; for (int i = 1; i <
2014-11-21 00:30:09
378
原创 LeetCode: LRU Cache
class LRUCache{public:typedef list::iterator ListIt; LRUCache(int capacity):_capacity(capacity) { _data.reserve(_capacity+1); } int get(int key) { auto it = _data
2014-11-20 01:00:46
371
原创 int i = -2147483648 后面的事情
微博上看到的,为啥INT_MIN=-INT_MAX-1。翻查了下,发现还是有点需要搞清楚的地方,记录如下。编译器为gcc 4.8.2. C++规范为n3797先看代码: auto a = -2147483648; auto b = 2147483648; auto c = 2147483647; cout <<a<<typeid(a).name()<<
2014-11-19 23:25:51
2372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人