LeetCode(46)汇总区间【区间】【简单】

LeetCode(46)汇总区间【区间】【简单】_第1张图片

目录

    • 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
  • -2^31 <= nums[i] <= 2^31 - 1
  • nums 中的所有值都 互不相同
  • nums 按升序排列

2.答案

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

        List<String> list = new ArrayList<>();
        int start = nums[0];
        Integer end = null;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] - nums[i - 1] == 1) {
                end = nums[i];
            } else {
                if (end == null) {
                    list.add(String.valueOf(start));
                } else {
                    list.add(String.format("%d->%d", start, end));
                }
                start = nums[i];
                end = null;
            }
        }
        if (end == null) {
            list.add(String.valueOf(start));
        } else {
            list.add(String.format("%d->%d", start, end));
        }
        return list;
    }
}

3.提交结果截图

LeetCode(46)汇总区间【区间】【简单】_第2张图片

整理完毕,完结撒花~

你可能感兴趣的:(LeetCode,leetcode,散列表,算法)