您的位置:首页 > 科技 > 能源 > 品牌网站制作报价_建设网络平台交印花税_厦门网站制作全程服务_做网站公司哪家正规

品牌网站制作报价_建设网络平台交印花税_厦门网站制作全程服务_做网站公司哪家正规

2025/4/29 0:18:46 来源:https://blog.csdn.net/weixin_43679621/article/details/147471478  浏览:    关键词:品牌网站制作报价_建设网络平台交印花税_厦门网站制作全程服务_做网站公司哪家正规
品牌网站制作报价_建设网络平台交印花税_厦门网站制作全程服务_做网站公司哪家正规

贪心

重叠区间

重叠区间问题通过固定一边,比较另一边

题目

452. 用最少数量的箭引爆气球 - 力扣(LeetCode)
排序后分情况讨论 1 区间左边界大于上一个的边界,说明还需要一个弓箭 2 比较右边界情况更新最小有边界与下一个区间左边界比较,更新右边界
在这里插入图片描述

static bool Cmp(std::vector<int>& a, std::vector<int>&b) {return a[0] < b[0]; // 小到大排序
}int findMinArrowShots(vector<vector<int>>& points) {// 边界判断if (points.size() == 0) return 0;// 按照左边界排序std::sort(points.begin(), points.end(), Cmp);// 不为空至少要一个箭int res = 1;// 比较当前与前一个区间for (int i = 1; i < points.size(); ++i) {if (points[i][0] > points[i-1][1]) res++;// 更新最小右边界作为射入点 贪在气球边缘射入else points[i][1] = std::min(points[i][1], points[i-1][1]);}return res;
}

435. 无重叠区间 - 力扣(LeetCode)
类似于上一道题,列出情况分析,采用左边或右边排序,可以使用上面一题代码取反即可
在这里插入图片描述

static bool Cmp(std::vector<int>& a, std::vector<int>& b) {return a[0] < b[0];
}
int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.size() == 0) return 0;// 排序std::sort(intervals.begin(), intervals.end(), Cmp);// 统计结果int res = 0;// 分割点int end = intervals[0][1];for (int i = 1; i < intervals.size(); ++i) {if (intervals[i][0] >= end) end = intervals[i][1];else {end = std::min(intervals[i][1], end);res++;}}return res;
}

763. 划分字母区间 - 力扣(LeetCode)
统计每个字母最远位置,通过手动构造哈希数组实现
在这里插入图片描述

vector<int> partitionLabels(string s) {// 统计最远字符int hash[27] = {0};for (int i = 0; i < s.size(); ++i) {// 统计当前最远的词hash[s[i] - 'a'] = i;}// 统计区间std::vector<int> res;int left = 0, right = 0;for (int i = 0; i < s.size(); ++i) {// 统计最远右端right = std::max(right, hash[s[i] - 'a']);if (i == right) {res.push_back(right - left + 1);left = right + 1;}}return res;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com