|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在leetcode上刷题,最后自己在ide上试的时候发现写不来主函数....
- /*以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi].
- *请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。*/
- /*
- *author:Ambert
- *date:2022/01/12
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <iostream>
- #include <vector>
- #include<numeric>
- #include <algorithm>
- using namespace std;
- class Solution{
- public:
- vector<vector<int>> merge(vector<vector<int>>& intervals){
- int n = intervals.size();
- if(n==0||n==1) return intervals;
- sort(intervals.begin(),intervals.end()); //使得数组内的数组有序
- vector<vector<int>> merged;
- for(int i=0;i<n;++i){
- int L=intervals[i][0],R=intervals[i][1]; //定义数组的最左指针和最右指针
- if(!merged.size()||merged.back()[1]<L) //前一个的最右元素小于后一个数组最左元素则不变
- merged.push_back({L,R});
- else
- merged.back()[1]=max(merged.back()[1],R); //否则,取最大的一个更新最右元素
- }
- return merged;
- }
- };
- int main(){
- vector<vector<int> > a = {{1,3},{2,6},{8,15},{10,18}};
- Solution solution;
- cout<<solution.merge(a)<<endl;
- }
复制代码
报错如下,请前辈指教
本帖最后由 人造人 于 2022-1-14 11:59 编辑
- /*以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi].
- *请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。*/
- /*
- *author:Ambert
- *date:2022/01/12
- */
- #include <algorithm>
- #include <iostream>
- #include <numeric>
- #include <stdio.h>
- #include <stdlib.h>
- #include <vector>
- using namespace std;
- class Solution {
- public:
- //vector<vector<int>> merge(vector<vector<int>> &intervals) {
- const vector<vector<int>> merge(vector<vector<int>> &intervals) {
- int n = intervals.size();
- if(n == 0 || n == 1)
- return intervals;
- //sort(intervals.begin(), intervals.end()); //使得数组内的数组有序
- sort(intervals.begin(), intervals.end(), [](const vector<int> &a, const vector<int> &b) {return a[0] < b[0];}); //使得数组内的数组有序
- vector<vector<int>> merged;
- for(int i = 0; i < n; ++i) {
- int L = intervals[i][0],
- R = intervals[i][1]; //定义数组的最左指针和最右指针
- if(!merged.size() ||
- merged.back()[1] < L) //前一个的最右元素小于后一个数组最左元素则不变
- merged.push_back({L, R});
- else
- merged.back()[1] =
- max(merged.back()[1], R); //否则,取最大的一个更新最右元素
- }
- return merged;
- }
- };
- ostream &operator<<(ostream &os, const vector<vector<int>> &rhs) {
- for(const auto &i: rhs) {
- for(const auto &j: i) {
- os << j << " ";
- }
- os << endl;
- }
- return os;
- }
- int main() {
- vector<vector<int>> a = {{1, 3}, {2, 6}, {8, 15}, {10, 18}};
- Solution solution;
- cout << solution.merge(a) << endl;
- return 0;
- }
复制代码
|
|