No. | Title | Difficulty | Solved | Date |
---|---|---|---|---|
53 | Maximum Subarray | Easy | yes | 2019-01-07 |
55 | Jump Game | Medium | yes | 2019-01-07 |
62 | Unique Paths | Medium | yes | 2019-01-08 |
64 | Minimum Path Sum | Medium | yes | 2019-01-08 |
494 | Target Sum | Medium | yes | 2010-01-12 |
746 | Min Cost Climbing Stairs | Easy | yes | 2019-01-09 |
最大连续子序列和,经典问题。
动态规划。Reach[i] = Math.max(Reach[i - 1], i + nums[i])。
动态规划。和leetcode.64类似。 ret[i, j] = ret[i + 1, j] + ret[i, j + 1];
动态规划 ret[i, j] = grid[i, j] + Math.MIN(ret[i + 1, j], ret[i, j + 1])
可以使用递归来进行解决。ret(begin, end, sum) = ret(begin + 1, end, sum + nums[begin]) + ret(begin + 1, end, sum - nums[begin])
在begin和end相等的时候,可以进行求解。 当nums[begin] == Math.abs(sum)的时候,有解存在。
需要注意的是,在sum为0的时候,此时解的个数为2
动态规划。ret[i] = Math.min(ret[i - 1] + cost[i - 1], ret[i - 2] + cost[i - 2]) 。其中ret[0] = ret[1] = 0;