Skip to content

Commit f606c12

Browse files
committed
fixed #10
1 parent 94b629d commit f606c12

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

014. Maximum Subarray/README.md

+16-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1-
这道题我一看到,我就想到了我的最爱——**[贪心算法](http://zh.wikipedia.org/wiki/%E8%B4%AA%E5%BF%83%E6%B3%95)**,太典型了好么。
2-
求拥有最大****的子序列,那么秉承贪心原则,假设初始解为A[0],那么我增加一个元素(A[1]),我就需要考虑,我的利益是多了,还是损失了。
1+
~~这道题我一看到,我就想到了我的最爱——**[贪心算法](http://zh.wikipedia.org/wiki/%E8%B4%AA%E5%BF%83%E6%B3%95)**,太典型了好么。
2+
求拥有最大****的子序列,那么秉承贪心原则,假设初始解为A[0],那么我增加一个元素(A[1]),我就需要考虑,我的利益是多了,还是损失了。~~
3+
4+
@Mooophy[issue](https://github.com/pezy/LeetCode/issues/10) 里指出,下述思路并不属于贪心的范畴。荣誉属于 DP,另外得知它有一个历史名字:[Kadane's algorithm](http://en.wikipedia.org/wiki/Maximum_subarray_problem).
5+
6+
----
7+
**贪心法与 DP 的最大区别在于**
8+
9+
- 动态规划讲究"**记录历史**"以及"**根据历史记录做出最优选择**"。
10+
- 贪心法对历史无记录,每一次是根据 **当前情况做出最优选择**
11+
12+
----
13+
314
由于题意要求,子序列至少要连续,所以没可能跳过 A[1], 只有两个选择:
415

516
1. A[0] + A[1]
@@ -17,13 +28,9 @@ maxv = max(benefited, maxv);
1728

1829
聪明的你一定发现了,第一句条恰是**当权者的决策**,第二条恰是**历史学家的总结**。 横批:人类是贪婪的。
1930

20-
所以不要怪任何一方,从他们的立场看,都是最优解。局部最优能否导致整体最优呢? 千年谜题。
21-
22-
------
31+
**由于我们累计了 `benefited`,并根据其值进行每一次选择。故该解法的本质是 DP 而非贪心。**
2332

24-
题目比较基础,扯了点政治与历史。谁说计算机与人文不是密切相关的。。。
25-
26-
------
33+
-----
2734

2835
另外,该题下面说到 More practice, 提到要用分治法?我没什么思路,请明白者提点。
2936

@@ -33,7 +40,7 @@ maxv = max(benefited, maxv);
3340

3441
-----
3542

36-
@Mooophy 应约而出,给出了[代码](#8),我根据其代码,尝试分析一下分治法的策略:
43+
@Mooophy 应约而出,给出了[代码](https://github.com/pezy/LeetCode/pull/9/files),我根据其代码,尝试分析一下分治法的策略:
3744

3845
分治法的灵魂在于一个 **"分"** 字。对于这道题而言,求`A`的最大和子序列,可以给`A`来一刀:
3946

0 commit comments

Comments
 (0)