Summary Ranges

来源:互联网 发布:小米6 移动4g网络差 编辑:程序博客网 时间:2024/05/20 05:22

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"].

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

思路:就是用双指针start , end,来表示区间,然后i进行移动,如果不连续,也就是nums[i]!=nums[end]+1 则AddString。注意最后循环完了,还要加一次最后的那个。这个题目跟merge interval类似。都是最后要加一次。

public class Solution {    public List<String> summaryRanges(int[] nums) {        List<String> list = new ArrayList<String>();        if(nums == null || nums.length == 0) return list;               int start =0; int end = 0;        for(int i=0; i<nums.length; i++){            if(i!=end && nums[i]!=nums[end]+1){                addString(list,nums, start, end);                start = i;                end = i;            } else {                end = i;            }        }        addString(list, nums, start, nums.length-1);        return list;    }        public void addString(List<String> list, int[] nums, int start, int end) {        StringBuilder sb = new StringBuilder();        if(start != end) {            sb.append(nums[start] + "->" + nums[end]);        } else {            sb.append(nums[start]);        }        list.add(sb.toString());    }}


0 0
原创粉丝点击