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

2021-10-11 16:34:29 字數 1522 閱讀 6347

在某乙個標準下, 優先考慮最滿足標準的樣本, 最後考慮最不滿足標準的樣本, 最終得到乙個答案的演算法, 叫作貪心演算法。

也就是說, 不從整體最優上加以考慮, 所做出的是在某種意義上的區域性最優解。

如何從區域性最優達到全域性最優解?舉反例和對數器來進行證明。對於給定的糖果和孩子胃口,看能最多滿足多少孩子。

解題思路:將可以滿足孩子的最小糖果分給該孩子,則可以使得滿足的孩子數最大。

class

solution

cookie++;}

return child;}}

;

解題思路如下

方法一:狀態機模型。

class

solution

else

if(nums[i]

< nums[i-1]

)break

;case up:

if(nums[i]

< nums[i-1]

)break

;case down:

if(nums[i]

> nums[i-1]

)break;}

}return maxlen;}}

;

方法二:貪心演算法。遍歷陣列,比較當前差值與前乙個差值的正負,若符號相反,序列加一,反之,繼續遍歷。

class

solution

}

retrurn result;}}

;

解題思路:

方法一:貪心演算法。將陣列看做多個累加和

class

solution}}

;

方法二:動態規劃。

class

solution

return result;}}

;

解題思路

方法一:貪心演算法。在後一天收益 - 前一天收益為正時,則賣出,累積為最優收益。

class

solution

return res;}}

;

解題思路:貪心演算法。將問題轉化為覆蓋問題,當可以覆蓋最後乙個數,則返回true。

class

solution

return

false;}

};

跳躍遊戲ii

解題思路:貪心演算法。遍歷陣列,記錄每個值的最遠跳躍位置,記錄該區間,在該區間內的最遠跳躍位置大於記錄的值,則更新該值。

class

solution

}return res;}}

;

練習

旋轉詞:kmp演算法。首先將字串本身相連,如cdab修改為cdabcdab,則新字串任意長度為4的子串為原字串的旋轉詞。

C 刷題 leetcode貪心系列 一

1.老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。2.你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。3.評分更高的孩子必須比他兩側的鄰位孩子獲得更多的糖果。4.那麼這樣下來,老師至少需要準備多少顆糖果呢?示例 1 輸...

C 刷題 leetcode貪心系列 二

給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1,2 1,...

C 刷題 leetcode貪心系列 四

字串 s 由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同一字母最多出現在乙個片段中。返回乙個表示每個字串片段的長度的列表。示例 輸入 s ababcbacadefegdehijhklij 輸出 9,7,8 解釋 劃分結果為 ababcbaca defegde hijhklij 每個字母最多...