当前位置: 首页> 教育> 培训 > 企业网站托管多少钱_简单的logo设计_百度关键词seo优化_网络推广方案怎么写

企业网站托管多少钱_简单的logo设计_百度关键词seo优化_网络推广方案怎么写

时间:2025/9/10 5:00:19来源:https://blog.csdn.net/weixin_52151595/article/details/146563532 浏览次数:1次
企业网站托管多少钱_简单的logo设计_百度关键词seo优化_网络推广方案怎么写


这道题目之前在代码随想录里面刷过,还有点印象,直接用贪心算法做了。用贪心算法需要先将整个二维数组进行排序,排序规则就是向量的左侧端点小的排在前面,然后我们定义好排序规则后利用sort函数对输入数组进行排序,然后遍历整个向量,在初始时,定义第一个向量的左右端点分别为leftright,然后每遍历到一个左端点小于left的区间,就将该区间加入到前一个区间,此时我们需要维护right的值,如果当前遍历到的向量的右端点值>right,则将right更新为当前向量的右端点值,否则保持原来的值。这里还有一个要注意的点,当遍历结束后,还有最后一个区间没有加入到结果中,所以在循环结束后我们需要手动将[left, rifht]添加到result中。下面是贪心的代码。

class Solution {
public:static bool My_Compare(const vector<int>& a, const vector<int>& b){//这里,输入的两个向量分别对应两个区间//我们根据区间的左端点进行升序排列return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {vector<vector<int>> result;//对输入的二维向量中的向量进行升序排列sort(intervals.begin(), intervals.end(), My_Compare); int left = intervals[0][0];int right = intervals[0][1];for(vector<int>& v : intervals){if(v[0] <= right){right = max(v[1], right);}else{result.push_back({left, right});left = v[0];right = v[1];}}result.push_back({left, right});return result;}
};

看了下灵神的题解,思路也是贪心,但是他的代码简洁很多,这里也把他的代码贴出来学习一下。

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {ranges::sort(intervals); // 按照左端点从小到大排序vector<vector<int>> ans;for (auto& p : intervals) {if (!ans.empty() && p[0] <= ans.back()[1]) { // 可以合并ans.back()[1] = max(ans.back()[1], p[1]); // 更新右端点最大值} else { // 不相交,无法合并ans.emplace_back(p); // 新的合并区间}}return ans;}
};
关键字:企业网站托管多少钱_简单的logo设计_百度关键词seo优化_网络推广方案怎么写

版权声明:

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

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

责任编辑: