随笔分类 -  LeetCode

摘要:https://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/一道很典型的题。使用两个距离为n的指针,往后移动到后面遇到尾端。第一个指针指向结点就是待删除结点。/** * Definition for singly-linked ... 阅读全文
posted @ 2014-10-14 15:40 zombies 阅读(156) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/trapping-rain-water/这道题使用单调队列能够O(n)时间解决。维护一个降序排列的单调队列。如果Ai>A[que.front]就说明能够使用que.front作为顶部计算一次积水。当从0-n时,须注意队列中还有元素。需... 阅读全文
posted @ 2014-10-14 14:48 zombies 阅读(465) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/flatten-binary-tree-to-linked-list/实现一个返回值为子树r展开后最右边节点的函数。然后使用这个函数适当的将展开后的右子树移到左子树的尾部,再将left指针置为0即可。/** * Definition ... 阅读全文
posted @ 2014-10-14 00:04 zombies 阅读(163) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/search-for-a-range/题目原意应该为使用二分搜索。搜lower_bound时直到a[l]=x时停止。搜upper_bound时直到a[r]=x时停止。typedef pair scpair;class Solution... 阅读全文
posted @ 2014-10-13 11:09 zombies 阅读(136) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/subsets-ii/预处理一下记录每个数字以及其出现的次数。然后在DFS时枚举出现次数即可。class Solution {public: int n,m; vector s; vector d; vec... 阅读全文
posted @ 2014-10-12 23:22 zombies 阅读(198) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/partition-list/首先找到第一个大于x的节点q,并记录前继lq。然后从q->next遍历其,将后面小于x的节点逐个插入lq与q之间,并将lq更新为新插入节点。/** * Definition for singly-link... 阅读全文
posted @ 2014-10-12 23:09 zombies 阅读(141) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/triangle/类似用DP的方法迭代以及节省空间的算法。从三角形底部将最小累加到上层即可。 1 class Solution { 2 public: 3 int n; 4 vector > tr; 5 int... 阅读全文
posted @ 2014-10-12 17:03 zombies 阅读(113) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/combination-sum/比较节省空间的方法是DFS回溯。犯了个小错忘记先排序。class Solution {public: int n,m; vector ca; vector > tot; vec... 阅读全文
posted @ 2014-10-12 16:07 zombies 阅读(114) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/跟后序中序类似。/** * Definition for binary tree * struct TreeNode ... 阅读全文
posted @ 2014-10-11 17:43 zombies 阅读(104) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/递归,每次找后序的最后一个元素,然后按中序将其分为两部分即可。/** * Definition for binary... 阅读全文
posted @ 2014-10-11 17:30 zombies 阅读(179) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/binary-tree-zigzag-level-order-traversal/水题,在DFS时加入一个level参数识别层数,然后将每层的结点都压入相应的数组中。/** * Definition for binary tree *... 阅读全文
posted @ 2014-10-11 14:30 zombies 阅读(154) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/letter-combinations-of-a-phone-number/简单DFS题。实际上只会出现[2,9]的数字。int t[11]={0,0,0,3,6,9,12,15,19,22,26};class Solution {p... 阅读全文
posted @ 2014-10-11 13:48 zombies 阅读(161) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/reverse-linked-list-ii/跟链表按组翻转类似,实现一个能够翻转区间的函数。然后找出这个区间并翻转即可。注意不要丢失链表头。/** * Definition for singly-linked list. * str... 阅读全文
posted @ 2014-10-11 11:53 zombies 阅读(177) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/n-queens/回溯法的课本例题。注意有递归非递归两种实现。class Solution {public: int n,m; vector c; vector > tot; bool Check(int p... 阅读全文
posted @ 2014-10-11 10:42 zombies 阅读(144) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/validate-binary-search-tree/递归判断二叉树是否为合法二查搜索树的题目。也可以中序打印出来然后扫描。注意判断BST是否合法条件是当前节点的值大于一切左边的+小于一切右边的。也就是说仅仅判断他和两个儿子的关系是... 阅读全文
posted @ 2014-10-11 02:19 zombies 阅读(298) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/edit-distance/DP例题。注意数组不要越界即可。const int INF=9999;class Solution {public: int n,m; vector > dp; string s1,s2;... 阅读全文
posted @ 2014-10-11 00:35 zombies 阅读(130) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/insertion-sort-list/插入排序为假设[0,i)已经为有序数组,下一步从[i,n)找最小的元素交换到i处。用指针模拟这个过程即可。就是操作有些麻烦。每次[head,p)为已经有序的数组,下次从[p,tail]找出最小的... 阅读全文
posted @ 2014-10-11 00:24 zombies 阅读(139) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/reverse-nodes-in-k-group/使用一个计数器cn,当cn%k=0时进行翻转,翻转时需要把这组链表前面的一个节点的next值也做相应的设置。并且翻转后最后一个节点的next值也需要设置。考虑这些之后小心操作链表即可,... 阅读全文
posted @ 2014-10-10 23:18 zombies 阅读(156) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/next-permutation/我这个解法并不很好,是O(n^2),这个在STL实现里应该是O(n)的。不过我的方法比较简单。想法是首先需要找到一个left边界l,这个边界需要跟其后面的某个元素r交换使序列增大。然后在l前面的部分不... 阅读全文
posted @ 2014-10-10 22:03 zombies 阅读(145) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/remove-duplicates-from-sorted-list-ii/链表操作的题目。基本思想是维护lp,p,q三个指针,主要麻烦在于处理边界条件。/** * Definition for singly-linked list.... 阅读全文
posted @ 2014-10-10 19:50 zombies 阅读(181) 评论(0) 推荐(0)