🌗 228. 汇总区间

吞佛童子2022年10月10日
  • algorithm
  • Array
小于 1 分钟

🌗 228. 汇总区间

难度: 🌗

问题描述

img_15.png


解法

class Solution {
    public List<String> summaryRanges(int[] nums) {
        // 思路:
        // 遍历数组,遇到非连续区间,将前面的区间加入结果集
        List<String> res = new ArrayList<>();
        int len = nums.length;
        if(len == 0) {
            return res;
        }
        int left = nums[0];
        int right = nums[0];
        for(int i = 1; i < len; i ++) {
            if(nums[i] == nums[i - 1] + 1) {
                right = nums[i];
            } else {
                // 将前面的区间加入结果集
                if(left == right) {
                    String s = "" + left;
                    res.add(s);
                } else {
                    String s = "" + left + "->" + right;
                    res.add(s);
                }
                // 更新 left & right
                left = nums[i];
                right = nums[i];
            }
        }
        // 将最后一个区间压栈
        if(left == right) {
            String s = "" + left;
            res.add(s);
        } else {
            String s = "" + left + "->" + right;
            res.add(s);
        }
        return res;
    }
}

输出

img_14.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou