Skip to content

Latest commit

 

History

History
39 lines (24 loc) · 1.74 KB

Dynamic Programming.md

File metadata and controls

39 lines (24 loc) · 1.74 KB

Dynamic Programming

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

  1. Maximum Subarray

最大连续子序列和,经典问题。

  1. Jump Game

动态规划。Reach[i] = Math.max(Reach[i - 1], i + nums[i])。

  1. Unique Paths

动态规划。和leetcode.64类似。 ret[i, j] = ret[i + 1, j] + ret[i, j + 1];

  1. Minimum Path Sum

动态规划 ret[i, j] = grid[i, j] + Math.MIN(ret[i + 1, j], ret[i, j + 1])

  1. Target Sum

可以使用递归来进行解决。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

  1. Min Cost Climbing Stairs

动态规划。ret[i] = Math.min(ret[i - 1] + cost[i - 1], ret[i - 2] + cost[i - 2]) 。其中ret[0] = ret[1] = 0;