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