生活随笔
收集整理的這篇文章主要介紹了
贪心思想草稿
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是貪心
貪心的本質是選擇每一階段的局部最優,從而達到全局最優。
這么說有點抽象,來舉一個例子:
例如,有一堆鈔票,你可以拿走十張,如果想達到最大的金額,你要怎么拿?
指定每次拿最大的,最終結果就是拿走最大數額的錢。
每次拿最大的就是局部最優,最后拿走最大數額的錢就是推出全局最優。
來實踐一下:
https://leetcode-cn.com/problems/longest-happy-string/
public String longestDiverseString(int a
, int b
, int c
) {PriorityQueue<int []> heap
= new PriorityQueue<>(new Comparator<int[]>() {@Overridepublic int compare(int[] o1
, int[] o2
) {return o2
[1]-o1
[1];}});if (a
>0){heap
.offer(new int[]{'a',a
});}if (b
>0) {heap
.offer(new int[]{'b',b
});}if (c
>0) {heap
.offer(new int[]{'c',c
});}StringBuilder sb
= new StringBuilder(a
+ b
+ c
);while (!heap
.isEmpty()) {int [] top
= heap
.poll();int n
= sb
.length();if (n
>=2 && sb
.charAt(n
-1) ==top
[0] && sb
.charAt(n
-2) == top
[0]) {if (!heap
.isEmpty()) {int[] second
= heap
.poll();sb
.append((char)second
[0]);if (--second
[1] > 0) {heap
.offer(second
);}heap
.offer(top
);}}else {sb
.append((char) top
[0]);if (--top
[1]>0) {heap
.offer(top
);}}}return sb
.toString();}
總結
以上是生活随笔為你收集整理的贪心思想草稿的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。