日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩转算法之面试第十章-贪心算法

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转算法之面试第十章-贪心算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

leetcode 455 分配餅干


嘗試將最大的餅干給最貪心的朋友
如果滿足,則+1
如果不滿足,則將最大的餅干給次貪心的朋友,一次類推

試圖讓最多的小朋友開心

在這里插入代碼片 #include<iostream> #include<vector>using namespace std;class Solution{private:public:int findContentChildren(vector<int>& g, vector<int>& s){sort(g.begin(),g.end(),greater<int>());//因為在c++里面sort默認是將函數從小到大進行排列,//加上greater是將數組從大到小進行排列sort(s.begin(),s.end(),greater<int>()); int si=0,gi=0;//分別指向最大的餅和最貪心的朋友int res=0;while(gi<g.size() && si<s.size()){if(s[si]>=g[gi]){res++;si++;gi++}elsegi++;} return res;} }; int main(){return 0;}

leetcode 392

貪心算法與動態規劃之間的關系
leetcode 435 區間不重疊

第一種情況,至少刪除一組區間,第二種至少刪除兩組區間
等價情況:最多保留多少個區間?

按照起始點進行排序

//區間不重疊 #include<iostream> #include<vector>using namespace std;struct Interval{int start;int end;Interval(): start(0), end(0){}Interval(int s, int e): start(s), end(e){} }; bool compare(const Interval &a, const Interval &b){if(a.start != b.start()) return a.start<b.startreturn a.end<b.end } class Solution{ private:public:int eraseOverlapIntervals(vector<Interval>& intervals){if(interval.size()==0)return 0;sort(intervals.begin(),intervals.end(),compare);//memo[i]表示使用intervals[0...i]的區間能構成的最長不重疊區間序列 vector<int> memo(intervals.size(),-1);for(int i=1; i<intervals.size();i++)for(int j=0; j<i; j++)if(intervals[i].start>>intervals[j].end()) memo[i]=max(memo[i],1+memo[j]);int res=0;for(int i=0;i<memo.size();i++)res=max(res,memo[i]);return intervals.size()-res; }}; int main(){return 0;}


//區間不重疊 貪心算法實現 #include<iostream> #include<vector>using namespace std;struct Interval{int start;int end;Interval(): start(0), end(0){}Interval(int s, int e): start(s), end(e){} }; bool compare(const Interval &a, const Interval &b){if(a.start != b.start()) return a.start<b.startreturn a.end<b.end } class Solution{ private:public:int eraseOverlapIntervals(vector<Interval>& intervals){if(interval.size()==0)return 0;sort(intervals.begin(),intervals.end(),compare);//memo[i]表示使用intervals[0...i]的區間能構成的最長不重疊區間序列 int res=1;int pre=0;for(int i=1; i<intervals.size();i++)if(intervals.start>=intervals[pre].end){res++;pre=i;}return intervals.size()-res; }}; int main(){return 0;}

貪心選擇性質:如果無法使用貪心算法,舉出反例就可
數學歸納法和反證法



總結

以上是生活随笔為你收集整理的玩转算法之面试第十章-贪心算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。