面试经典-28-汇总区间

题目

给定一个 无重复元素 的 有序 整数数组 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"

java 复制代码
class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> result = new ArrayList<>();
        if(nums.length == 0){
            return result;
        }

        int start = nums[0];
        int end = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (nums[i - 1] + 1 == nums[i]) {
                end = nums[i];
            } else {
                if (start == end) {
                    result.add(String.valueOf(start));
                } else {
                    result.add(start + "->" + end);
                }
                start = nums[i];
                end = nums[i];
            }
            
        }
        if (start == end) {
            result.add(String.valueOf(start));
        } else {
            result.add(start + "->" + end);
        }
        return result;
    }
}
相关推荐
CYLAM20256 小时前
STC32G12K128单片机实现高精度算法及常用初等函数值的计算
算法
奶人五毛拉人一块6 小时前
动态规划--子数组类型
算法·动态规划·子数组问题
HugoStudio_SWAN6 小时前
洛谷 P1321 单词覆盖还原——从蜡板上的密信到数字水印
c++·学习·程序人生·算法
Lost of 程序猿6 小时前
.NET 线程安全集合与并发数据结构深度实战:从 lock 到无锁
数据结构·安全·.net
刘孬孬沉迷学习7 小时前
AI音频领域完整调研:任务、算法、大模型研究全梳理
人工智能·算法·音视频
退休倒计时7 小时前
【每日五题】leetcode TypeScript
算法·leetcode·职场和发展·typescript
机器学习之心7 小时前
基于BiGRU-Attention的轴承剩余寿命预测(MATLAB实现):从振动信号到RUL曲线的完整闭环
数据结构·算法·matlab·轴承剩余寿命预测·振动信号·bigru-attention
青梅橘子皮7 小时前
优选算法---专题2(滑动窗口)
数据结构·算法
程序猫.7 小时前
双指针问题
java·数据结构·算法
心抵鹊7 小时前
力扣每日一题:计算右侧小于当前元素的个数(hard)
算法·leetcode