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 可组成一个连续的区间。

本题没有用什么特殊算法技巧,我们遍历整个数组,当数组的当前元素的后一位比前一位大1,就归并区间,直到后一位不比前一位大1即可。
思路也是比较简单的,代码如下:

class Solution {
    public List summaryRanges(int[] nums) {
        
        List ans = new ArrayList<>();
        int start = 0;
        int end = nums.length;
        while(start < end){

            String tmp = new String();
            tmp += nums[start];
            int i = start;
            while( i + 1 < end && nums[i] + 1 == nums[i+1]){
                i++;
            }
            if(i != start){
                tmp += "->"+nums[i];
                start = i;
            }
            ans.add(tmp);
            start++;
        }
        return ans;
    }
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

你可能感兴趣的:(228. 汇总区间)