LeetCode150道面试经典题-- 汇总区间(简单)

news2025/1/22 12:43:35

1.题目

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

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

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

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

2.示例

示例 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 按升序排列

3.思路

首先需要进行判断数组的内容个数,如果是一个的则直接添加到链表后返回,而如果是多个再分情况,先设置一个起始位,然后进行遍历数组,当数组内容发生跳变即之间的差不为1时候,就将起始位和当前不同的位置放入list中。

4.代码

LeetCode代码

class Solution {
    public List<String> summaryRanges(int[] nums) {
        int srcIndex= 0;
        List<String> list = new ArrayList<>();
        if (nums.length==1){
            list.add(nums[0]+"");
        }
        for (int i=1;i< nums.length;i++){
            if (nums[i]-1==nums[i-1]){
                if (i== nums.length-1){
                    list.add(nums[srcIndex]+"->"+nums[i]);
                }
            }else {
                if (srcIndex == i-1){
                    list.add(nums[srcIndex]+"");
                }else {
                    list.add(nums[srcIndex]+"->"+nums[i-1]);
                }
                if (i == nums.length-1){
                    list.add(nums[i]+"");
                }
                srcIndex = i;
            }
        }
        return list; 
    }
}

案例详细代码

package LeetCode20;

import java.util.ArrayList;
import java.util.List;

public class javaDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        int nums[] = new int[]{-1};
        int srcIndex= 0;
//        判断特殊情况
        if (nums.length==1){
            list.add(nums[0]+"");
        }
//        遍历数组
        for (int i=1;i< nums.length;i++){
//            判断是否发生跳变
            if (nums[i]-1==nums[i-1] ){
                if (i== nums.length-1){
                    list.add(nums[srcIndex]+"->"+nums[i]);
                    System.out.println("有序下必定执行");
                }
            }else {
                System.out.println(i);
                if (srcIndex == i-1){
//                    处理同一数字
                    list.add(nums[srcIndex]+"");
                }else {
                    list.add(nums[srcIndex]+"->"+nums[i-1]);
                }
//                最后一个数据无序处理
                if (i == nums.length-1){
                    list.add(nums[i]+"");
                }
                srcIndex = i;
            }
        }
        System.out.println(list);
    }
}

 会了?试试挑战下一题!♪(^∀^●)ノシ (●´∀`)♪

LeetCode150道面试经典题-- 有效的括号(简单)_Alphamilk的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/883611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wi-Fi 安全在学校中的重要性

Wi-Fi 是教育机构的基础设施&#xff0c;从在线家庭作业门户到虚拟教师会议&#xff0c;应有尽有。大多数 K-12 管理员对自己的 Wi-Fi 网络的安全性充满信心&#xff0c;并认为他们现有的网络安全措施已经足够。 不幸的是&#xff0c;这种信心往往是错误的。Wi-Fi 安全虽然经常…

Excel设置某列或者某行不某行不可以编辑,只读属性

设置单元格只读的三种方式: 1、通过单元格只读按钮&#xff0c;设置为只为 设置行或者列的只读属性&#xff0c;可以设置整行或者整列只读 2、设置单元格编辑控件为标签控件(标签控件不可编辑) 3、通过锁定行&#xff0c;锁定行的修改。锁定的行与只读行的区别在于锁定的行不…

docker-compose部署nacos 2.2.3

1、编写docker-compose.yml文件 version: "3.1" services:nacos:restart: alwaysimage: nacos/nacos-server:v2.2.3container_name: nacosenvironment:- NACOS_AUTH_ENABLEtrue- MODEstandalone- NACOS_AUTH_TOKEN8b92c609089f74db3c5ee04bd7d4d89e8b92c609089f74db…

高层建筑全景vr火灾隐患排查模拟培训软件助力群众防范火灾伤害

随着城市化进程的加快&#xff0c;楼宇建筑的数量也在不断增加。然而&#xff0c;楼宇消防安全问题也日益突出。为了提高楼宇员工和居民的消防安全意识&#xff0c;楼宇VR消防安全教育培训应运而生。VR安全培训公司深圳华锐视点制作的楼宇vr消防安全教育培训&#xff0c;包括消…

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式

STM32CubeMx配置定时器的编码器模式 上次文章写了编码器是如何工作的&#xff0c;今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。 编程思路&#xff1a; A相:TIM3_CH1 B相:TIM3_CH2 SWITCH:PB5&#xff08;外部中断的方式&#xff09; 实现效果&a…

threejs实现水面的效果

实现水波纹的效果&#xff1a;加入几何形状&#xff0c;可以将平台的几何形状 const waterGeometry new THREE.PlaneGeometry( 10000, 10000 ); 引入水的插件&#xff0c;并修改水的材质。 import { Water } from three/addons/objects/Water.js;const water new Water(water…

【Java】常见面试题:网络

目录 1. 为什么需要网络协议的分层&#xff1f;2. 【封装和分用】3. Socket套接字主要针对传输层协议划分为如下三类&#xff08;了解&#xff09;4. 简单说一下TCP和UDP的区别&#xff1a;5. TCP中的长短连接6. 应用层重点协议7. TCP可靠传输机制&#xff08;三次握手四次挥手…

excel中定位条件,excel中有哪些数据类型、excel常见错误值、查找与替换

一、如何定位条件 操作步骤&#xff1a;开始 - 查找和选择 - 定位条件&#xff08;ctrl G 或 F5&#xff09; 注&#xff1a;如果F5不可用&#xff0c;可能是这个快捷键被占用了 案例&#xff1a;使用定位条件选择取余中空单元格&#xff0c;填入100&#xff0c;按组合键ct…

C++之signal信号应用实例(一百七十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Docker容器:docker基础及安装

文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.…

视频联网报警厂家怎么找?

视频联网报警厂家怎么找&#xff1f;要找到联网报警设备厂家&#xff0c;可以按照以下步骤进行&#xff1a; 1. 在互联网上搜索&#xff1a;可以使用搜索引擎&#xff0c;如谷歌或百度&#xff0c;搜索关键词&#xff0c;如“联网报警设备厂家”、“安防设备厂家”等&#xff…

生信豆芽菜-相关性热图

网址&#xff1a;http://www.sxdyc.com/panCancerHeatMap 1、数据准备 第一个文件&#xff1a;相关性矩阵 行为泛癌&#xff0c;列为通路的评分&#xff0c;数值为相关性&#xff08;当然也可以换成其他的数据&#xff09; 第二个文件&#xff1a;显著性矩阵 行为泛癌&#x…

linux学习(等待+进程替换初识)[9]

阻塞等待 一般在内核中阻塞&#xff08;伴随着被切换&#xff09;&#xff0c;等待被唤醒&#xff08;放在等待队列【一种数据结构】中&#xff09; 在Linux中&#xff0c;阻塞等待是指一个进程或线程被暂停执行&#xff0c;直到某个条件满足或事件发生。下面介绍两种常见的阻…

C++学习——string类的模拟实现

目录 string类的创建 string类的构造函数 itertor迭代器 []操作符重载 字符串修改函数 1.尾插函数 2.append函数 3.运算符重载函数 4.clear函数 5.swap函数 容量检测或修改函数 resize函数 reserve函数 经过上一次的博客之后我们已经认识了string类&#xff0c;并且可以使用str…

【C++从0到王者】第二十一站:继承

文章目录 前言一、继承的概念及定义1. 继承的概念2.继承的格式3.继承关系与访问限定符 二、基类和派生类的赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员 前言 继承是面向对象的三大特性之一。我们常常会遇到这样的情况。很多角色的信…

显卡nvidia-smi后 提示Faild 解决过程,包含卸载重装NVIDIA驱动步骤

显卡异常: 显卡nvidia-smi后 提示Faild 解决过程&#xff0c;卸载重装nvidia驱动步骤 文章目录 显卡异常: 显卡nvidia-smi后 提示Faild 解决过程&#xff0c;卸载重装nvidia驱动步骤 [toc]1 缘由2 解决过程3 过程所需命令4 解决4.1 把该显卡重新拔插一下卸载NVIDIA驱动的方法&a…

远程遥控IPTables进行端口复用

一、配置&#xff08;通过ip进行ping&#xff09; 1.创建复用链 iptables -t nat -N LETMEIN 2.创建端口复用将流量转发到22端口上 iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22 3.开启开关&#xff0c;如果接收到一个长为 1139 的 ICMP 包&#xff0c;则将…

Ajax及前端工程化

Ajax&#xff1a;异步的js与xml。 作用&#xff1a; 1、通过ajax给服务器发送数据&#xff0c;并获得其响应的数据。 2、可以在不更新整个网页的情况下&#xff0c;与服务器交换数据并更新部分网页的技术。 一、同步与异步 二、原生Ajax 1、准备数据地址 2、创建XMLHttpReq…

图神经网络 day2 图的分类

图神经网络基础算法 1 GCN2 GraphSAGE2.1 采样&#xff1a;采样固定长度的邻居2.2 聚合2.3 GraphSAGE_minibatch2.4 GraphSAGE_embedding 3 GAT4. 图网络的分类4.1 递归图神经网络 RGNN4.2 图卷积神经网络GCN4.3 图注意力网络 GAT4.4 图自动编码 GAE4.5 图时空网络 GSTN4.6 图生…

echarts 柱状图-折线图-饼图的基础使用

上图示例图表展示相关配置&#xff1a; var myChart echarts.init(this.$refs.firstMain);myChart.setOption({legend: { // 图例设置top: "15%",type: "scroll",orient: "vertical",//图例列表的布局朝向。left: "right",pageIconCo…