diff --git a/notes/Redis.md b/notes/Redis.md index 82373006..3f76efb1 100644 --- a/notes/Redis.md +++ b/notes/Redis.md @@ -70,6 +70,8 @@ OK

+ + ```html > rpush list-key item (integer) 1 diff --git a/notes/剑指 offer 题解.md b/notes/剑指 offer 题解.md index 29952f2f..9c3177b3 100644 --- a/notes/剑指 offer 题解.md +++ b/notes/剑指 offer 题解.md @@ -97,6 +97,7 @@ - begin, end 表示左闭右开区间:[begin, end); - l, h 表示二分查找的闭区间:[l, h]; - ret 表示结果相关的变量; +- dp 表示动态规划保存子问题的数组; **复杂度简写说明** @@ -435,6 +436,16 @@ public int pop() { 以 O(1) 的时间复杂度求菲波那切数列。 +

+ +**解题思路** + +如果使用递归求解,那么会重复计算一些子问题。例如,求 f(10) 需要计算 f(9) 和 f(8),计算 f(9) 需要计算 f(8) 和 f(7),可以看到 f(8) 被重复计算了。 + +

+ +递归方法是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,避免重复求解子问题。 + ```java public class Solution { private int[] fib = new int[40]; diff --git a/pics/080f488c-75ef-49a8-a49d-78fa372ad422.png b/pics/080f488c-75ef-49a8-a49d-78fa372ad422.png new file mode 100644 index 00000000..c40ea2d2 Binary files /dev/null and b/pics/080f488c-75ef-49a8-a49d-78fa372ad422.png differ