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

leetcode163.缺失的区间,模拟

leetcode163.缺失的区间

给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。

示例:
输入: nums = [0, 1, 3, 50, 75], lower = 0 和 upper = 99,
输出: [“2”, “4->49”, “51->74”, “76->99”]
在这里插入图片描述

题目分析

本题要求找出给定整数数组 nums 中缺失的区间。数组 nums 已经排序,且数组中的元素均为闭区间。需要找到所有不在 nums 中的闭区间,并返回这些区间的字符串表示形式。

算法步骤

  1. 初始化:在 nums 数组前后分别添加 lower-1upper+1,以便处理边界情况。
  2. 遍历数组:遍历处理后的数组,比较相邻元素。
  3. 判断区间
    • 如果相邻元素差为1,表示没有缺失的区间,继续遍历。
    • 如果相邻元素差为2,表示缺失一个元素,将这个元素添加到结果中。
    • 如果相邻元素差大于2,表示缺失一个区间,将这个区间添加到结果中。
  4. 返回结果:返回所有缺失区间的字符串表示形式。

算法流程

差为1
差为2
差大于2
开始
初始化数组
遍历数组
判断区间
继续遍历
添加缺失元素到结果
添加缺失区间到结果
遍历结束?
返回结果
结束

算法代码

class Solution {
public:vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {nums.insert(nums.begin(),lower-1);nums.push_back(upper+1);vector<string> ans;for(int i = 1;i<nums.size();i++)if(nums[i]-nums[i-1]==1) continue;else if(nums[i]-nums[i-1]==2) ans.push_back(to_string(nums[i]-1));else ans.push_back(to_string(nums[i-1]+1)+"->"+to_string(nums[i]-1));return ans;}
};

算法分析

  • 时间复杂度:O(n),其中 n 是数组 nums 的长度。我们只需要遍历一次数组。
  • 空间复杂度:O(1),除了返回结果所用的空间外,我们只需要常数级别的额外空间。
  • 易错点:处理边界情况时,需要在数组前后添加 lower-1upper+1,以正确处理包含边界值的情况。
  • 注意点:在转换区间为字符串时,注意单个元素和区间的不同表示方式。

相似题目

题目链接
LeetCode 228. Summary Ranges求连续区间的总结
LeetCode 163. Missing Ranges本题的变体,更接近原题
LeetCode 229. Majority Element II找出数组中出现次数超过 ⌊ n/3 ⌋ 次的元素

相关文章:

  • 【算法】堆排之LCR 159.库存管理 Ⅲ(easy)
  • Python Web 与量子计算
  • css的页面布局属性
  • 65.【C语言】联合体
  • Databend 实现高效实时查询:深入解读 Dictionary 功能
  • 对于基础汇编的趣味认识
  • 综合练习 学习案例
  • 【AIGC】ChatGPT提示词助力自媒体内容创作升级
  • 笔记本电脑如何改ip地址:操作指南与注意事项
  • 深度解析:Python蓝桥杯青少组精英赛道与高端题型概览
  • 程序设计语言
  • JavaScript模块化-CommonJS规范和ESM规范
  • 论文阅读(十一):CBAM: Convolutional Block Attention Module
  • C++入门(有C语言基础)
  • 并行编程实战——TBB框架的应用之一Supra的基础
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • CentOS 7 防火墙操作
  • ES6核心特性
  • HashMap剖析之内部结构
  • jdbc就是这么简单
  • k个最大的数及变种小结
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • WePY 在小程序性能调优上做出的探究
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 前端存储 - localStorage
  • 实战|智能家居行业移动应用性能分析
  • 学习Vue.js的五个小例子
  • 由插件封装引出的一丢丢思考
  • 最近的计划
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #define
  • #HarmonyOS:Web组件的使用
  • #Linux(帮助手册)
  • (007)XHTML文档之标题——h1~h6
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (Oracle)SQL优化技巧(一):分页查询
  • (python)数据结构---字典
  • (笔试题)分解质因式
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读40-45)图像描述1
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)详解PHP处理密码的几种方式
  • .Net 6.0 监听Windows网络状态切换
  • .net CHARTING图表控件下载地址
  • .NET MVC 验证码
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net6 webapi log4net完整配置使用流程