mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-26 12:53:43 +00:00
Update Leetcode 题解 - 贪心思想.md
文字校对,精简题目描述;代码块标注语言。
This commit is contained in:
@@ -33,7 +33,7 @@ Output: 2
|
||||
1. 给一个孩子的饼干应当尽量小并且又能满足该孩子,这样大饼干才能拿来给满足度比较大的孩子。
|
||||
2. 因为满足度最小的孩子最容易得到满足,所以先满足满足度最小的孩子。
|
||||
|
||||
在以上的解法中,我们只在每次分配时饼干时选择一种看起来是当前最优的分配方法,但无法保证这种局部最优的分配方法最后能得到全局最优解。我们假设能得到全局最优解,并使用反证法进行证明,即假设存在一种比我们使用的贪心策略更优的最优策略。如果不存在这种最优策略,表示贪心策略就是最优策略,得到的解也就是全局最优解。
|
||||
在以上的解法中,我们只在每次分配饼干时选择一种看起来是当前最优的分配方法,但无法保证这种局部最优的分配方法最后能得到全局最优解。我们假设能得到全局最优解,并使用反证法进行证明,即假设存在一种比我们使用的贪心策略更优的最优策略。如果不存在这种最优策略,表示贪心策略就是最优策略,得到的解也就是全局最优解。
|
||||
|
||||
证明:假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,可以给该孩子分配第 n 个饼干,并且 m \< n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。
|
||||
|
||||
@@ -104,7 +104,7 @@ public int eraseOverlapIntervals(int[][] intervals) {
|
||||
}
|
||||
```
|
||||
|
||||
使用 lambda 表示式创建 Comparator 会导致算法运行时间过长,如果注重运行时间,可以修改为普通创建 Comparator 语句:
|
||||
使用 lambda 表达式创建 Comparator 会导致算法运行时间过长,如果注重运行时间,可以修改为普通创建 Comparator 语句:
|
||||
|
||||
```java
|
||||
Arrays.sort(intervals, new Comparator<int[]>() {
|
||||
@@ -123,7 +123,7 @@ Arrays.sort(intervals, new Comparator<int[]>() {
|
||||
|
||||
[Leetcode](https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/description/) / [力扣](https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons/description/)
|
||||
|
||||
```
|
||||
```text
|
||||
Input:
|
||||
[[10,16], [2,8], [1,6], [7,12]]
|
||||
|
||||
@@ -218,7 +218,7 @@ public int maxProfit(int[] prices) {
|
||||
|
||||
[Leetcode](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/) / [力扣](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/description/)
|
||||
|
||||
题目描述:可以进行多次交易,多次交易之间不能交叉进行,可以进行多次交易。
|
||||
题目描述:可以进行多次交易,多次交易之间不能交叉进行。
|
||||
|
||||
对于 [a, b, c, d],如果有 a \<= b \<= c \<= d ,那么最大收益为 d - a。而 d - a = (d - c) + (c - b) + (b - a) ,因此当访问到一个 prices[i] 且 prices[i] - prices[i-1] \> 0,那么就把 prices[i] - prices[i-1] 添加到收益中。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user