其实贪心只是一种思路,时常体现在各种算法里面,像之前讲的最小生成树(prim),最短路径(Dijkstra)就是展现了贪心的思路。
这种题目也没有固定的做法,只是遵循这种思路再去设计贪心的策略,就整理几题~~
122. 买卖股票的最佳时机 II
这题乍看下是DP,但其实贪心思路是可以求出答案的~~
原因是最佳解就只是每一段上升价差的和((掌握到最好的价差时间,也只能获得每一段价差和)),所以是一个贪心思路,直接算整个数组上升和
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
int res = 0;
for(int i = 1; i<n; ++i){
if(prices[i]>prices[i-1]){
res+=prices[i]-prices[i-1];
}
}
return res;
}
};
1833. 雪糕的最大数量
没别的..就先从便宜的开始买..
class Solution {
public:
int maxIceCream(vector<int>& costs, int coins) {
sort(costs.begin(), costs.end());
int res = 0;
for(int i = 0; i<costs.size(); ++i){
if(coins>=costs[i]){
coins-=costs[i];
res++;
}
}
return res;
}
};
11. 盛最多水的容器
贪心思路:从两侧开始移动,比较左右边界,如果其中一侧比较矮,先移动那一侧(才有可能使容量变大)
class Solution {
public:
int maxArea(vector<int>& height) {
int res = 0;
int l = height.size()-1;
int r = 0;
while(r<l){
res = max(res, (l-r)*min(height[l], height[r]));
if(height[r]<height[l]){
r++;
}
else{
l--;
}
}
return res;
}
};
机器学习中,Decision Trees,也是用到这种思路去选择树的建构~~
<<: 【3】训练前先暖身 - 学习率 Warm-up 策略
Hi Dai Gei Ho~ 我是Winnie ~ 在今天的文章中,我们要简单来说说 在 Lifec...
了解各个工具的特性,并相互运用 讲完EC2的架构图以及介绍後,首先会介绍有哪些AWS服务可以去建置部...
前言 前面两篇基础的介绍 React.createElemnt(),但实际再开发上很少真的直接写它,...
一家公司很难单靠一个产品来获利,就像 原来产品也有自己的生命历程 Product Life Cycl...
前言 这是 Obsidian 使用教学 — 基础篇的第 8 篇文章。 在 上一篇文章 中,我介绍了一...