LeetCode刷題指南 貪心演算法

2021-09-10 05:48:50 字數 979 閱讀 3705

45. 跳躍遊戲 ii

class solution 

maxl = nextmax;

}return 0;

}};

134. 加油站

第一種解法:比較容易理解,但是效率比較低

class solution 

}return rest < 0 ? -1: start;

}};

621. 任務排程器

給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a - z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。

然而,兩個相同種類的任務之間必須有長度為n的冷卻時間,因此至少有連續 n 個單位時間內 cpu 在執行不同的任務,或者在待命狀態。

你需要計算完成所有任務所需要的最短時間

示例 1:

輸入: tasks = ["a","a","a","b","b","b"], n = 2

輸出: 8

執行順序: a -> b -> (待命) -> a -> b -> (待命) -> a -> b.

思路:

找到出現次數最大的任務t_max,完成任務的時間就是在該任務之間插入n+1個單位的時間,最後還應該找出最後一次執行的任務數,即和t_max出現次數相同的任務,另外還可能存在任務列表中所有任務只出現一次的情況,注意考慮

class solution 

int len = tasks.size();

int res = max(ans,len);

return res;

}};

Leetcode刷題系列(六)貪心演算法

在某乙個標準下,優先考慮最滿足標準的樣本,最後考慮最不滿足標準的樣本,最終得到乙個答案的演算法,叫作貪心演算法。也就是說,不從整體最優上加以考慮,所做出的是在某種意義上的區域性最優解。如何從區域性最優達到全域性最優解?舉反例和對數器來進行證明。對於給定的糖果和孩子胃口,看能最多滿足多少孩子。解題思路...

貪心演算法刷題

牛牛有乙個陣列array,牛牛可以每次選擇乙個連續的區間,讓區間的數都加1,他想知道把這個陣列變為嚴格單調遞增,最少需要操作多少次?嚴格遞增,我們應該讓某個數字後面的乙個比他小的連續區間都進行加1操作,然後遍歷整個陣列 除最後乙個數字 其實我們不需要真正的對陣列進行加1操作,只需要求出ai與ai 1...

LeetCode刷題 貪心演算法 376擺動序列

leetcode刷題 貪心演算法 376擺動序列 如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,...