Java实现 LeetCode 228 汇总区间

228. 汇总区间

给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。

示例 1:

输入: [0,1,2,4,5,7]
输出: [“0->2”,“4->5”,“7”]
解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。
示例 2:

输入: [0,2,3,4,6,8,9]
输出: [“0”,“2->4”,“6”,“8->9”]
解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。

class Solution {
    public List<String> summaryRanges(int[] nums) {
        int lo = 0, hi = 1;
        List<String> res = new ArrayList<>();
        if (nums.length == 0) return res;
        while (hi <= nums.length) {
            if (hi != nums.length && nums[hi] - 1 == nums[hi-1]) {
                hi ++;
            } else {
                StringBuilder str = new StringBuilder();
                if (lo == hi - 1) {
                    str.append(nums[lo]);
                } else {
                    str.append(nums[lo]).append("->").append(nums[hi-1]);
                }
                res.add(str.toString());
                lo = hi;
                hi ++;
            }
        }

        return res;
    }

}
原文地址:https://www.cnblogs.com/a1439775520/p/13075991.html