Summary Ranges
题目链接:https://leetcode.com/problems...
loop两种写法:
public class Solution { public ListsummaryRanges(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 ListsummaryRanges(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
摘要:双层迭代法复杂度时间空间思路外层的循环控制每个的起点,内层的循环控制之内的递增。每当遍历完一个,就把它记录到结果中,并更新下一个的起点。这里的技巧是,判断一个数是否是在内的,只要就行了,即值之差等于下标之差。 Summary Ranges Given a sorted integer array without duplicates, return the summary of it...
摘要:输入一个排序好的整数数组,输出数组中连续数字的范围的数组这是我的解法,不知道有没有有更好更快的实现 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]. 输入一个排...
阅读 1861·2023-04-26 01:56
阅读 3087·2021-11-18 10:02
阅读 3021·2021-09-09 11:35
阅读 1240·2021-09-03 10:28
阅读 3370·2019-08-29 18:36
阅读 2829·2019-08-29 17:14
阅读 812·2019-08-29 16:10
阅读 1593·2019-08-26 13:45