首页 > 其他 > 详细

Summary Ranges

时间:2015-06-26 12:38:41      阅读:119      评论:0      收藏:0      [点我收藏+]

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;
    }
}

 

Summary Ranges

原文:http://www.cnblogs.com/NickyYe/p/4601865.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!