资讯专栏INFORMATION COLUMN

Summary Ranges

yintaolaowanzi / 1593人阅读

Summary Ranges

题目链接:https://leetcode.com/problems...

loop两种写法:

public class Solution {
    public List summaryRanges(int[] nums) {
        List result = new ArrayList();
        if(nums.length == 0) return result;
        /* loop invariant: nums[i] != nums[i-1] + 1 
         */
        for(int i = 0; i < nums.length; i++) {
            int prev = nums[i];
            while(i < nums.length - 1 && nums[i] + 1 == nums[i+1]) {
                i++;
            }
            result.add(getRange(prev, nums[i]));
        }
        return result;
    }
    
    private String getRange(int i, int j) {
        if(i == j) return "" + i;
        return i + "->" + j;
    }
}
public class Solution {
    public List summaryRanges(int[] nums) {
        List result = new ArrayList();
        if(nums.length == 0) return result;
        
        int prev = nums[0];
        for(int i = 0; i < nums.length; i++) {
            if(i == nums.length - 1 || nums[i] + 1 != nums[i+1]) {
                result.add(getRange(prev, nums[i]));
                if(i != nums.length - 1) prev = nums[i+1];
            }
        }
        return result;
    }
    
    private String getRange(int i, int j) {
        if(i == j) return "" + i;
        return i + "->" + j;
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66591.html

相关文章

  • [Leetcode] Summary Ranges 统计区间

    摘要:双层迭代法复杂度时间空间思路外层的循环控制每个的起点,内层的循环控制之内的递增。每当遍历完一个,就把它记录到结果中,并更新下一个的起点。这里的技巧是,判断一个数是否是在内的,只要就行了,即值之差等于下标之差。 Summary Ranges Given a sorted integer array without duplicates, return the summary of it...

    Youngdze 评论0 收藏0
  • [Leetcode刷题]Summary Ranges —— javascript

    摘要:输入一个排序好的整数数组,输出数组中连续数字的范围的数组这是我的解法,不知道有没有有更好更快的实现 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]. 输入一个排...

    Doyle 评论0 收藏0

发表评论

0条评论

yintaolaowanzi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<