【LeetCode面试150】——228汇总区间

devtools/2024/11/26 18:26:14/

博客昵称:沈小农学编程

作者简介:一名在读硕士,定期更新相关算法面试,欢迎关注小弟!

PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

题目难度:简单

默认优化目标:最小化时间复杂度。

Python默认为Python3。

目录

1 题目描述

2 题目分析

3 代码实现

参考文献


1 题目描述

给定一个 无重复元素有序 整数数组 nums

返回 恰好覆盖数组中所有数字最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x

列表中的每个区间范围 [a,b] 应该按如下格式输出:

  • "a->b" ,如果 a != b

  • "a" ,如果 a == b

示例 1:

输入:nums = [0,1,2,4,5,7]
输出:["0->2","4->5","7"]
解释:区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

示例 2:

输入:nums = [0,2,3,4,6,8,9]
输出:["0","2->4","6","8->9"]
解释:区间范围是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"

提示:

  • 0 <= nums.length <= 20

  • -231 <= nums[i] <= 231 - 1

  • nums 中的所有值都 互不相同

  • nums 按升序排列

2 题目分析

输入是一个已经排好序的整数数组nums,输出是区间数组ans。如果区间只有一个数那么区间就是它本身;如果是两个数及以上,就是"a->b"。

3 代码实现

这题简单,一次遍历即可。判断数连续以及对两个及以上的数区间添加"->"。

时间复杂度O(n),空间复杂度O(1)。

C++代码实现

class Solution {
public:vector<string> summaryRanges(vector<int>& nums) {vector<string> ans;int i=0;int n=nums.size();while(i<n){int low=i;i++;//判断连续while(i<n && nums[i]==nums[i-1]+1){i++;}int high=i-1;string temp=to_string(nums[low]);//整数转成字符串if(low<high){temp.append("->");temp.append(to_string(nums[high]));}ans.push_back(move(temp));}return ans;}
};

Python代码实现

python">class Solution:def summaryRanges(self, nums: List[int]) -> List[str]:n=len(nums)i=0ans=[]
​while i<n:low=ii+=1while i<n and nums[i]==nums[i-1]+1:i+=1high=i-1temp=(str(nums[low]))if low<high:temp+="->"+str(nums[high])ans.append(temp)return ans

参考文献

力扣面试经典150题

力扣官方题解


http://www.ppmy.cn/devtools/137185.html

相关文章

DICOM图像处理:深入解析DICOM彩色图像中的Planar配置及其对像素数据解析处理的实现

引言 在DICOM(Digital Imaging and Communications in Medicine)标准中,彩色图像的存储与显示涉及多个关键属性,其中**Planar Configuration(平面配置)**属性(标签 (0028,0006))尤为重要。当遇到彩色DICOM图像在浏览时被错误地分割为9张小图,而实际应显示为一…

STM32F103C8T6实时时钟RTC

目录 前言 一、RTC基本硬件结构 二、Unix时间戳 2.1 unix时间戳定义 2.2 时间戳与日历日期时间的转换 2.3 指针函数使用注意事项 ​三、RTC和BKP硬件结构 四、驱动代码解析 前言 STM32F103C8T6外部低速时钟LSE&#xff08;一般为32.768KHz&#xff09;用的引脚是PC14和PC…

腾讯云 AI 代码助手:产品研发过程的思考和方法论

一、文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构&#xff0c;并从技术、研发方法论的角度分别阐述了产品的研发过程。 全文阅读约 5&#xff5e;8 分钟。 二、产品布局 AI 代码助手产品经历了三个时代的发展 第一代诸如 Eclipse、Jetbrains、V…

conda下载与pip下载的区别

一、conda下载与pip下载的区别 最重要是依赖关系&#xff1a; pip安装包时&#xff0c;尽管也对当前包的依赖做检查&#xff0c;但是并不保证当前环境的所有包的所有依赖关系都同时满足。 当某个环境所安装的包越来越多&#xff0c;产生冲突的可能性就越来越大。conda会检查当…

Stable Diffusion初步见解(三):扩散模型

Stable Diffusion 的核心在于扩散模型&#xff08;Diffusion Models&#xff09;&#xff0c;它是一种生成模型&#xff0c;近年来在图像生成领域取得了显著的成果。扩散模型通过模拟数据从纯噪声逐步演变到清晰图像的过程&#xff0c;生成高质量、多样化的图像。以下是关于扩散…

信创改造 - TongRDS 替换 Redis

记得开放 6379 端口哦 1&#xff09;首先在服务器上安装好 TongRDS 2&#xff09;替换 redis 的 host&#xff0c;post&#xff0c;passwd 3&#xff09;TongRDS 兼容 jedis # 例如&#xff1a;更改原先 redis 中对应的 host&#xff0c;post&#xff0c;passwd 改成 TongRDS…

Linux系统使用valgrind分析C++程序内存资源使用情况

内存占用是我们开发的时候需要重点关注的一个问题&#xff0c;我们可以人工根据代码推理出一个消耗内存较大的函数&#xff0c;也可以推理出大概会消耗多少内存&#xff0c;但是这种方法不仅麻烦&#xff0c;而且得到的只是推理的数据&#xff0c;而不是实际的数据。 我们可以…

Android res复制脚本

./copy.sh A路径 B路径 文件名 key ./copy.sh A_res B_res strings.xml hello 将A_res文件为strings.xml中的hello&#xff0c;复制到项目B_res文件为strings.xml中 #!/bin/bash# 检查输入的参数数量 if [ "$#" -ne 4 ]; thenecho "用法: $0 <源路径> &l…