Array
文章平均质量分 65
Dylan_Java_NYC
练很重要,总结更重要,感谢CSDN给了我这么好的平台交流。
展开
-
LeetCode Remove Duplicates from Sorted Array II
原题链接在这里:https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/本题是Remove Duplicates from Sorted Array的延伸。不同就是允许一次重复,所以可以加一个limit,当limit小于1的时候可以,同时limit++, limit等于1时跳过。注意这里的条件是小于1而不是2原创 2015-09-02 13:01:43 · 386 阅读 · 0 评论 -
LeetCode Maximum Subarray
原题链接在这里:https://leetcode.com/problems/maximum-subarray/本题借鉴了这篇帖子:http://blog.csdn.net/linhuanmars/article/details/21314059采用的是DP解法,同时维护局部最优和全局最优,局部最优就是必须包含当前点的最优解,全局最优可以不包含当前点。历史信息就是local[i-1] 和原创 2015-09-15 11:48:57 · 542 阅读 · 0 评论 -
LeetCode Maximum Product Subarray
原题链接在这里:https://leetcode.com/problems/maximum-product-subarray/与Maximum Subarray类似。但出了要维护一个局部最大量外还需要同时多维护一个局部最小量。e.g.[-2,3,-4], 若不维护局部最小量,i = 1时,局部最大是3,全局最大也是3,i=2时 局部最大变成-4,全局最大变成3,但实际全局最大应该是8. 这原创 2015-09-15 12:14:55 · 394 阅读 · 0 评论 -
LeetCode Maximal Square
原题链接在这里:https://leetcode.com/problems/maximal-square/这是一道DP题,存储历史信息是到当前点能有的最大square, 用二维数组dp存储。更新方式是若当前点为0,则不更新,若当前点为1,则取上dp[i-1][j], 左dp[i][j-1], 左上dp[i-1][j-1]的中的最小值,开根号加一,最后平方为dp[i][j].初始第一行和原创 2015-09-15 22:41:29 · 429 阅读 · 0 评论 -
LeetCode Best Time to Buy and Sell Stock II
原题链接在这里:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/是Best Time to Buy and Sell Stock的进阶版,但思路去不太相同。这里可以进行无数次交易,当然不能比prices.length - 1还多,就是每次股票比前一天差价大于0都进行交易,把这些大于0的差价相加就是最后返回的结原创 2015-09-16 02:27:35 · 441 阅读 · 0 评论 -
LeetCode Best Time to Buy and Sell Stock
原题链接在这里:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/与Maximum Subarray相似,都是全局最优与局部最优问题。维护一个局部最优解,和一个全局最优解, 先更新局部最优解, 要么是原来的局部最优加上i天与i-1天得差价,要么是0(i天股价没有i-1天高), 然后维护全局最优,最后返回全局最优。原创 2015-09-15 23:05:17 · 553 阅读 · 0 评论 -
LeetCode Best Time to Buy and Sell Stock IV
原题链接在这里:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/本题是Best Time to Buy and Sell Stock III的general情况。但这里要注意若是k很大已经超过了prices.length的时候,若是按照DP的方法做会浪费时间以及空间。此时可以直接参照Best Time t原创 2015-09-16 12:42:17 · 848 阅读 · 0 评论 -
LeetCode Best Time to Buy and Sell Stock III
原题链接在这里:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/本题是Best Time to Buy and Sell Stock的进阶版。思路也很相似,仍旧是维护一个全局最优,一个局部最优。这里最多可以进行k次交易,让后本题把k变成2即可。全局最优global是到达第i天可以最多进行j次交易的利润是多少原创 2015-09-16 12:29:18 · 453 阅读 · 0 评论 -
LeetCode Largest Rectangle in Histogram
原题链接在这里:https://leetcode.com/problems/largest-rectangle-in-histogram/参考了这篇帖子:http://www.cnblogs.com/lichen782/p/leetcode_Largest_Rectangle_in_Histogram.html里面讲的很清楚,生成了stack, 当遇到比stack 顶部更大array元素时原创 2015-09-17 04:35:41 · 675 阅读 · 0 评论 -
LeetCode Minimum Path Sum
原题链接在这里:https://leetcode.com/problems/minimum-path-sum/是DP题,与Unique Paths 和 Unique Paths II相似。存储历史信息是走到走到历史点的最小权重路径,更新当前点用上面点和左面点中的小值加上grid中当前点的值。跟Unique Paths 和 Unique Paths II 都有相同的第二种降维方原创 2015-09-15 06:55:57 · 421 阅读 · 0 评论 -
LeetCode Unique Paths
原题链接在这里:https://leetcode.com/problems/unique-paths/若从DP角度考虑这个问题就是需保存历史数据为走到当前格子的不同路径数,用二维数组res保存。 更新当前点res[i][j]为上一行同列res[i-1][j]的值 + 本行上一列res[i][j-1]的值,因为走到上一行同列的值想走到当前格都是往下走一步,左边同理。初始条件是第一行和第一原创 2015-09-13 07:47:48 · 287 阅读 · 0 评论 -
LeetCode Remove Duplicates from Sorted Array
原题链接在这里:https://leetcode.com/problems/remove-duplicates-from-sorted-array/利用counter来更改新array前面的元素,因为原题中知名length后面的元素没有关系。AC Java:public class Solution { public int removeDuplicates(int[]原创 2015-09-02 12:38:00 · 297 阅读 · 0 评论 -
LeetCode Convert Sorted Array to Binary Search Tree
原题链接在这里:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/本题与Convert Sorted List to Binary Search Tree相似,不同就是这个argument是array. 所以为了方便记左右index来做递归,就建一个有多个argument的函数。这也是array原创 2015-09-03 04:04:11 · 277 阅读 · 0 评论 -
LeetCode Construct Binary Tree from Preorder and Inorder Traversal
原题链接在这里:https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/利用preorder 和 inorder来构造树。e.g. preorder 1, 2, 4, 5, 3, 6, 7 inorder 4, 2, 5, 1, 6, 3, 7先原创 2015-08-21 02:33:55 · 427 阅读 · 0 评论 -
LeetCode Majority Element I && II
原题链接在这里:Majority Element I,Majority Element II对于Majority Element I 来说,有多重解法。Method 1:最容易想到的就是用HashMap 计数,数值大于n/2(注意不是大于等于而是大于),就是返回值。Time O(n), Space O(n).Method 2: 用了sort,返回sort后array的中值即可。Ti原创 2015-08-20 10:32:51 · 323 阅读 · 0 评论 -
LeetCode Construct Binary Tree from Inorder and Postorder Traversal
原题链接在这里:https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/这道题与Construct Binary Tree from Preorder and Inorder Traversal 思路相似,不同之处在于这里的root在postorder的最有一位,其他都相同原创 2015-08-21 03:03:10 · 355 阅读 · 0 评论 -
LeetCode Triangle
原题链接在这里:https://leetcode.com/problems/triangle/从底往上动态规划,维护一个res数组,res里的每一个元素都是从底走到这一点的最小值,更新方式是取res在下一行与自己临近的两个元素的最小值加上triangle在这点本身的元素。最后返回res[0]即可。Note: 若triangle 只包含一行也考虑到了,因为若只有一行,res会先初始化成最原创 2015-09-12 03:08:07 · 303 阅读 · 0 评论 -
LeetCode Unique Paths II
原题链接在这里:https://leetcode.com/problems/unique-paths-ii/是Unique Paths的进阶版题目。思路与Unique Paths相似,不同点在于加了障碍物,DP的更新当前点方式有所不同, 若是此处有障碍物,res里这一点就是0,若此处没有障碍物,res里这一点就同行上一列和同列上一行的和。Note: 初始化是点res[0][0].A原创 2015-09-14 01:39:54 · 303 阅读 · 0 评论 -
Interview Return Products of All Other Elements in Array
这是一道面试亚马逊时的题目,要求Time O(n). 我刚开始想的是算出所有的数的总product,再去除以对应位置的元素,但这种做法的问题是若该位置为0,就会报错。到网上搜了下,才知道,原来有这种做法。e.g. arr = {0,1,2,3},生成两个array: upArr = {1,arr[0], arr[0]*arr[1],arr[0]*arr[1]*arr[2]}do原创 2015-08-18 04:09:53 · 348 阅读 · 0 评论 -
LeetCode Maximal Rectangle
原题链接在这里:https://leetcode.com/problems/maximal-rectangle/与Largest Rectangle in Histogram Largest Rectangle in Histogram Largest Rectangle in Histogram Largest Rectangle in Histogram相似AC Java:pu原创 2015-09-17 22:55:18 · 421 阅读 · 0 评论