diff --git "a/Dynamic Program/\345\256\266/.keep" "b/Dynamic Program/\345\256\266/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/Dynamic Program/\345\256\266/\345\256\266_300.md" "b/Dynamic Program/\345\256\266/\345\256\266_300.md" new file mode 100644 index 0000000000000000000000000000000000000000..b5a7b3acdd020d0774046581b9c59d6adfd18f13 --- /dev/null +++ "b/Dynamic Program/\345\256\266/\345\256\266_300.md" @@ -0,0 +1,24 @@ +```go +/** + * 作者:家 + * 思路:两次循环每次找到当前位置的前边是不是有比自己小的,小的位置的值+1即可,随时记录最大值。 + * 时间复杂度:O(n^2) + * 空间复杂度:O(n) + */ + func lengthOfLIS(nums []int) int { + l := len(nums) + if l <= 1 {return l} + res := 1 + dp := make([]int,l) + for i:=0;i dp[i] {dp[i] = dp[j]+1} + } + } + if dp[i] > res {res = dp[i]} + } + return res +} +``` \ No newline at end of file diff --git "a/Dynamic Program/\345\256\266/\345\256\266_322.md" "b/Dynamic Program/\345\256\266/\345\256\266_322.md" new file mode 100644 index 0000000000000000000000000000000000000000..3229d0a5b5dab09bc545b514ed767594846dd270 --- /dev/null +++ "b/Dynamic Program/\345\256\266/\345\256\266_322.md" @@ -0,0 +1,25 @@ +```go +/** + * 作者:家 + * 思路:详细解释可以参照超哥视频。 + * 时间复杂度:O(n^2) + * 空间复杂度:O(n) + */ +func coinChange(coins []int, amount int) int { + dp := make([]int, amount+1) + for v := 1; v <= amount; v++ { + dp[v] = amount + 1 + } + for _, coin := range coins { + for v := coin; v <= amount; v++ { + if dp[v] > dp[v-coin] + 1 { + dp[v] = dp[v-coin] + 1 + } + } + } + if dp[amount] > amount { + return -1 + } + return dp[amount] +} +``` \ No newline at end of file