Easy-题目62:228. Summary Ranges

题目原文:
. Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7], return [“0->2”,”4->5”,”7”].
题目大意:
给出一个排序的数组,没有重复元素,用区间的字符串表示。
例如给出[0,1,2,4,5,7], 返回[“0->2”,”4->5”,”7”].
题目分析:
使用两个指针p1和p2,类似于滑动窗口,固定指针p1,一直滑动p2,直到p2的后继元素不等于p2所指元素+1(即出现间断),那么列表中增加一个字符串,并令p1指向p2的下一个节点,再滑动。如果p1就是一个间断的数字,那么直接把p1对应的字符串输入到列表中。
源码:(language:java)

public class Solution {
    public List<String> summaryRanges(int[] nums) {
        int len=nums.length;
        List<String> answer=new ArrayList<String>();
        if(len==0)
            return answer;
        int start=0,end=0;
        while(start<len) {
            String range;
            while(end+1<len && nums[end+1]==nums[end]+1)
                end++;
            if(end!=start)
                range=new Integer(nums[start]).toString()+"->"+new Integer(nums[end]).toString();
            else 
                range=new Integer(nums[start]).toString();
            answer.add(range);
            end++;
            start=end;
        }
        return answer;
    }
}

成绩:
1ms,beats 3.19%,众数1ms,94.54%

你可能感兴趣的:(Easy-题目62:228. Summary Ranges)