随笔分类 -  LeetCode

摘要:https://oj.leetcode.com/problems/rotate-image/90度顺时针旋转一个矩阵。很容易联想到矩阵转置。但是矩阵转置是将第i行变成了第i列。而这个旋转的结果是要使第i行变成第n-i列。所以在转置之后再将每一列调整到其应该在的地方即可。还有一种方法是注意到每个元素的... 阅读全文
posted @ 2014-10-20 20:24 zombies 阅读(212) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/search-in-rotated-sorted-array-ii/当允许相等时,就要考虑各种边界条件。我的策略是把每个>,l){ int mid=(l+r)/2; if (x==A[mid... 阅读全文
posted @ 2014-10-20 18:52 zombies 阅读(169) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/remove-duplicates-from-sorted-array/用一个cnt记录不重复的部分,后面每遇到不重复的cnt++即可。class Solution {public: int removeDuplicates(i... 阅读全文
posted @ 2014-10-20 03:03 zombies 阅读(112) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/linked-list-cycle-ii/在判断成环问题的基础上需要做一些推理才能得到简洁的解法。首先,假设环的起点距离head有m步。则当p到达起点时,q的位置在环上的m%n处。那么p,q相遇的位置相对于起点就是(n-m%n),在这... 阅读全文
posted @ 2014-10-20 02:55 zombies 阅读(127) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/unique-binary-search-trees-ii/跟二叉树个数计数的那道题类似,不同的是需要把所有的可能都返回,并整合成结果。/** * Definition for binary tree * struct TreeNod... 阅读全文
posted @ 2014-10-19 16:47 zombies 阅读(150) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/3sum-closest/和3sum类似。不同的是这次需要逼近一个值,实际上跟相等类似,用l和r指针不断移动,然后反复取最小即可。class Solution {public: int n,m; int threeSumC... 阅读全文
posted @ 2014-10-19 10:59 zombies 阅读(137) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/powx-n/其实是很简单的递归就能解。每次将其降低到n/2即可。需要注意各种边界条件,包括n为最小的负数的情况。class Solution {public: double pow(double x, int n) { ... 阅读全文
posted @ 2014-10-19 02:19 zombies 阅读(148) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/gas-station/计算每个加油站的加油差diff[]。得到一个数组。从贪心的角度来说,如果我们找到一个最大子串,那么从他的起点l开始走,能够连续一直走并且累积最大量的汽油。一个猜想是:如果这些汽油不足以走完全程,那么无论从哪里都... 阅读全文
posted @ 2014-10-19 02:05 zombies 阅读(252) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/maximum-subarray/一直累加子串并求最大。当子串小于0时就抛弃掉,这样总能找到最大的那个子串和。class Solution {public: int maxSubArray(int A[], int n) { ... 阅读全文
posted @ 2014-10-19 01:34 zombies 阅读(159) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/distinct-subsequences/首先要理解题目:count the number of distinct subsequences ofTinS.意思是,数出T在S的唯一子序列的个数。也就是有多少个S的子序列是T。子序列可... 阅读全文
posted @ 2014-10-19 00:41 zombies 阅读(252) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/combination-sum-ii/一道DFS搜索的题目,需要注意去除重复。可以使用一个map记录每个数字重复的次数。然后每次递归时-1,在递归退回时在加回来。class Solution {public: int n,m; ... 阅读全文
posted @ 2014-10-18 21:06 zombies 阅读(174) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/anagrams/这道题考你知不知道什么是Anagrams:字母一样,顺序不一样的单词,就是一组anagrams。也就是说,我们需要找出一些组的单词,每组的单词具有同样的字母,并将该组所有的单词都加入进来。所以用一个map标记第一个出... 阅读全文
posted @ 2014-10-18 18:02 zombies 阅读(208) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/scramble-string/这道题要想办法将其考虑为动态规划,否则会超时。需要想到的一点是长度比较小的连续子串可以作为长度比较长的连续子串是否是合法乱序的子问题。然后就能定义出递推:f(p,q,l) :从s1的p和s2的q字符开始... 阅读全文
posted @ 2014-10-18 16:55 zombies 阅读(335) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/longest-palindromic-substring/这道题O(n^2)的DP的解法会超时。大致思路就是从0-n计算子串的最大子串,并利用ispar[p][q]数组记录[p,q]是否是回文以避免每次判断子串是否是回文。class... 阅读全文
posted @ 2014-10-17 16:46 zombies 阅读(150) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/candy/两遍扫面,第一遍保证ci与ci-1的关系能够保证满足分数大小。第二遍保证ci与ci+1关系能够保证。注意顺序一定要是比较当前与上次更新过的结果。不能由于本次的更新影响以后不会扫描的结果。class Solution {pu... 阅读全文
posted @ 2014-10-16 22:21 zombies 阅读(120) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/3sum/先排序。然后枚举i属于[0,n-3]的这些数作为三元组的第一个数,令x=0-a[i]。这样就变成从[i+1,n)找出两个数加起来和等于x。由于这些数是有序数,可以使用l,r指针对在两侧向中间逼近。这利用了一个事实:如果al+... 阅读全文
posted @ 2014-10-16 17:33 zombies 阅读(229) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/roman-to-integer/将罗马数字字符串转换为十进制数字。首先将罗马数字每一位对应的数字列出来。然后每次搜索当前后面一部分是否等于其中一个罗马数字。找到匹配的最长的那个罗马数字将其匹配掉即可。class Solution {... 阅读全文
posted @ 2014-10-16 15:24 zombies 阅读(162) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/merge-sorted-array/归并排序的一步操作,需要事先把A[]的元素移到数组末端,前段空出来填充结果。需要注意的是如果从0~m的转移会在n比较小的时候有问题。所以要从m~0转移。使用memcpy在GCC下就是从0~m开始转... 阅读全文
posted @ 2014-10-15 21:37 zombies 阅读(129) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node/构造一个按深度索引的数组,存储的当前遍历的结点在这一层的最右边的结点。由前序遍历的特点可知同一层左边的儿子先被访问,过一段时间后会访问右边的儿子。... 阅读全文
posted @ 2014-10-14 20:28 zombies 阅读(108) 评论(0) 推荐(0)
摘要:https://oj.leetcode.com/problems/pascals-triangle-ii/类似DP的迭代方法,只需注意数组大小分配即可。class Solution {public: int n,m; vector c[2]; vector getRow(int r... 阅读全文
posted @ 2014-10-14 16:34 zombies 阅读(116) 评论(0) 推荐(0)