Idiot-maker

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

https://leetcode.com/problems/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"].

解题思路:

这道题很简单,是比较典型的双指针题目。

要注意的就是,如何在数组只有一个元素,还有遍历到最后一个元素的时候,去更新结果集。

我这里比较的是第i个元素和i-1个元素的值。所以循环条件可以改成i<=nums.length,也就是比实际元素的下标+1。这样i==nums.length-1的时候,nums[i]虽然不存在,可以认为i-1就是end,强行更新。

public class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> res = new ArrayList<String>();
        int start = 0;
        for(int i = 1; i <= nums.length; i++) {
            if(i == nums.length || nums[i] > nums[i - 1] + 1) {
                StringBuilder cur = new StringBuilder();
                if(i - 1 == start) {
                    cur.append(nums[start]);
                    res.add(cur.toString());
                } else {
                    cur.append(nums[start]);
                    cur.append("->");
                    cur.append(nums[i - 1]);
                    res.add(cur.toString());
                }
                start = i;
            }
        }
        return res;
    }
}

 

posted on 2015-06-26 11:18  NickyYe  阅读(457)  评论(0编辑  收藏  举报