LeetCode 101 刷题 - (1) 第一章 最易懂的贪心算法
2025/8/24
LeetCode 455 分发糖果
class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int g_size = g.size();int s_size = s.size();int child_idx = 0;int candy_idx = 0;while(child_idx < g_size && candy_idx < s_size){if(g[child_idx] > s[candy_idx]){candy_idx++;}else{child_idx++;candy_idx++;}}return child_idx++;}
};
LeetCode 135 分发糖果
class Solution {
public:int candy(vector<int>& ratings) {int n = ratings.size();vector<int> res(n, 1);// 先从左向右开始遍历for(int i=1;i<n;i++){if(ratings[i] > ratings[i-1]){res[i] = res[i-1] + 1;}}// 开始从右往左开始遍历for(int i=n-1;i>0;i--){if(ratings[i-1] > ratings[i]){res[i-1] = max(res[i-1], res[i] + 1);}}int result = accumulate(res.begin(), res.end(), 0);return result;}
};
LeetCode 435 无重叠区间
435. 无重叠区间 - 力扣(LeetCode)
class Solution {
public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {// 基于区间结尾进行排序sort(intervals.begin(), intervals.end(), [] (vector<int>& a, vector<int>& b){return a[1] < b[1];});int res = 0;int end_idx = intervals[0][1];for(int i=1;i<intervals.size();i++){if(intervals[i][0] < end_idx){res++;}else{end_idx = intervals[i][1];}}return res;}
};