当前位置: 首页 > news >正文

合并区间 leetcode56

合并区间leetcode

  • 目录
    • 一、题目
    • 二、踩坑过程
    • 三、上官方解答
    • 四、含泪体会
    • 彩蛋


目录

一、题目

在这里插入图片描述

二、踩坑过程

一开始想使用一个数组来标记区间,但是仔细想不好实现,单纯把区间里出现的设置为1,不好体现重叠的概念,如果使用三种状态,-1表示区间起始,-2表示区间结束,区间中间的数的用大于零的数字表示,但是如果一个区间只有一个值,就不好统一了,状态变化的情况太多,而且最后不好收集所有的区间。

。。。看了解析,思路其实抓住两点,一个是两个区间之间的关系,仔细思考有6种情况(自己想)
如果把区间按起始点进行排序,位置关系有3种(自己想)

二是如何收集结果,如果第二个区间是在内部或者是有交集的情况,这个时候可以进行合并,如果是分离的情况,前一个区间就可以加入结果集了。(为什么?因为前面按起始点排序了,此时不会出现第二个区间在第一个区间左边的情况)

------> 感悟:自己死磕区间标记搞了两个小时,最后被1个用例卡住了,含泪放弃自己的思路了。
😭

三、上官方解答

#include<iostream>
#include<vector>
#include<algorithm>using namespace std;class Solution {
public:static bool cmp(vector<int> v1, vector<int> v2) {return v2[0] > v1[0];}int RelPosition(vector<int> v1, vector<int> v2) {// 相离if (v2[0] > v1[1]) {return 3;}// 包含if (v2[0] >= v1[0] && v2[1] <= v1[1]) {return 1;}// 交集if (v2[0] >= v1[0] && v2[0] <= v1[1] && v2[1] >= v1[1]) {return 2;}return -1;}vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), cmp);vector<vector<int>> res;vector<int> tmpres;tmpres = intervals[0];for (int i = 1; i < intervals.size(); i++) {vector<int> intv = intervals[i];int p = RelPosition(tmpres, intv);if (p == 3) {res.push_back(tmpres);tmpres = intv;} else if (p == 2) {tmpres[1] = intv[1];}}res.push_back(tmpres);return res;}
};

四、含泪体会

这道题的提交记录有十几次,但是这次还是没有写出来,😭,因为之前的提交是直接看的答案,第一反应还是直接标记数组解决,结果坑了啊,坑了啊。。。

彩蛋

因为工作语言用的是C,发现qsort和sort的cmp函数有点不一样,总结一下。
c语言中的qsort升序

// 比较函数,用于比较两个整数
int cmpfunc (const void * a, const void * b)
{return ( *(int*)a - *(int*)b ); // 从小到大
}
qsort((void*)arr, size, sizeof(arr[0]), cmpfunc);

c++中sort升序

bool cmp(int a ,int b)
{return a < b ;		// 从小到大排序,把 < 换成 > 就是从大到小 
}
sort(p.begin(), p.end(), cmp);

http://www.mrgr.cn/news/64407.html

相关文章:

  • dos2unix -f tar.gz 解决ftp后无法解压的问题
  • 【Flask】四、flask连接并操作数据库
  • diffusion model 学习笔记
  • UE中查“资源包因何变脏”的方式
  • JSON交互处理
  • LeetCode100之找到字符串中所有字母异位词(438)--Java
  • 【云备份项目】json以及jsoncpp库的使用
  • 在Zetero中调用腾讯云API的输入密钥的问题
  • 快速上手 Windows 命令:简化你的工作流程
  • tauri开发中如果取消了默认的菜单项,复制黏贴撤销等功能也就没有了,解决办法
  • Oracle OCP认证考试考点详解082系列09
  • 【数据结构与算法】第8课—数据结构之二叉树(堆)
  • SQL查询 join的用法
  • sv标准研读第二十章-系统函数与系统任务
  • 【高等数学】3-2多元函数积分学
  • 计算机网络——TCP拥塞控制原理
  • 基于BP神经网络的手写体数字图像识别
  • 图文深入介绍Oracle DB link(三)
  • 【传知代码】用于图像识别的判别图正则化技术
  • nginx上传文件超过限制大小、响应超时、反向代理请求超时等问题解决
  • [HNCTF 2022 Week1]calc_jail_beginner_level3(JAIL)
  • 产品定义和独开分类
  • 形式化假说非决定论不确定性
  • Waymo的EMMA给多模态端到端自驾指引了方向
  • 软考:大数据架构设计
  • 【AI日记】24.11.02 LangChain Chat with Your Data