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