IncredibleThings

导航

LeetCode - Summary Ranges

Given a sorted integer array without duplicates, return the summary of its ranges.

Example 1:

Input:  [0,1,2,4,5,7]
Output: ["0->2","4->5","7"]
Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
Example 2:

Input:  [0,2,3,4,6,8,9]
Output: ["0","2->4","6","8->9"]
Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> result = new ArrayList<>();
        if(nums == null || nums.length == 0){
            return result; 
        }
        int start = 0;
        int end = 0;
        while(end < nums.length){
            if(end+1 < nums.length && nums[end+1] == nums[end]+1){
                end++;
            }
            else{
                if(start == end){
                    result.add (Integer.toString(nums[end]));
                }
                else{
                    String str = nums[start] + "->" + nums[end];
                    result.add(str);
                }
                end++;
                start = end;
            }
        }
        return result;
    }
}

维护两个指针,start与end,如果nums[end+1] == nums[end],移动end,否则记录start到end的路径到list里。

posted on 2018-08-06 10:53  IncredibleThings  阅读(116)  评论(0编辑  收藏  举报