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

LeetCode436:寻找右区间

题目链接:436. 寻找右区间 - 力扣(LeetCode)

class Solution {
public:vector<int> findRightInterval(vector<vector<int>>& intervals) {vector<pair<int, int>> startIntervals;int n = intervals.size();for(int i = 0; i < n; i++){startIntervals.emplace_back(intervals[i][0], i);}sort(startIntervals.begin(), startIntervals.end());vector<int> ans(n, -1);for(int i = 0; i < n; i++){auto it = lower_bound(startIntervals.begin(), startIntervals.end(), make_pair(intervals[i][1], 0));if(it != startIntervals.end()){ans[i] = it->second;}}return ans;}
};

题目语言解释:这个题目实际上就是排序加上二分,而lower_bound()的复杂的已经是达到logn,所以就可以使用这个函数,(在这里解释一下这个函数,lower_bound()是找到某个数组的第一个出现的大于等于给定的数)。

代码解释:这个题目首先定义一个vector里面嵌套的一个pair数组,然后去存下来,这个语句很关键。

 startIntervals.emplace_back(intervals[i][0], i);

这个代码顾名思义也就是遍历当前的数和增加i的值,然后去存到这个数组里面。排序。

在定义一个数组,这个数组最关键的是把所有的值赋值为-1,-1因为是题目要求没找到的时候。

然后在去遍历数组的数,找到第一个出现的大于等于这个给定的数。这里有个代码很关键

 

auto it = lower_bound(startIntervals.begin(), startIntervals.end(), make_pair(intervals[i][1], 0));

make_pair(intervals[i][1], 0)也就是创建一个键值对数组为<intervals[i][1], 0>

这个意思也就是在startIntervals数组里面寻找键值对<intervals[i][1], 0>这个值。

如果找到的话,那就让it指向的pair<int, int>里面的第二个数赋值给ans里面。

http://www.lryc.cn/news/394177.html

相关文章:

  • 前端JS特效第22集:html5音乐旋律自定义交互特效
  • pyrender 离线渲染包安装教程
  • XSS平台的搭建
  • 【持续集成_03课_Jenkins生成Allure报告及Sonar静态扫描】
  • PageHelper分页查询遇到的小问题
  • 【Python】组合数据类型:序列,列表,元组,字典,集合
  • algorithm算法库学习之——不修改序列的操作
  • idea创建的maven项目pom文件引入的坐标报红原因
  • Python面试题:Python 中的生成器(generator)是什么?有什么优点?
  • Go语言--复合类型之map、结构体
  • Stable Diffusion图像的脸部细节控制——采样器全解析
  • CurrentHashMap巧妙利用位运算获取数组指定下标元素
  • 实现antd designable平台的组件拖拽功能
  • 计算机网络-IP组播基础
  • Git删除了文件拉取时失败
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令
  • Spring Boot与Apache Kafka Streams的集成
  • Unity中使用VectorGraphics插件时,VectorUtils.RenderSpriteToTexture2D方法返回结果错误的解决方法
  • 用MySQL+node+vue做一个学生信息管理系统(一):配置项目
  • 2024年06月CCF-GESP编程能力等级认证Python编程二级真题解析
  • Unity动画系统(2)
  • 深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇
  • 自动化设备上位机设计 四
  • [leetcode hot 150]第二十三题,合并K个升序链表
  • MybatisPlus实现插入/修改数据自动设置时间
  • Java语言程序设计篇一
  • Calicoctl工具学习 —— 筑梦之路
  • Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记
  • PyTorch学习之torch.transpose函数
  • Git仓库介绍