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;}
贪心选择性质:如果无法使用贪心算法,举出反例就可
数学归纳法和反证法