给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。
示例 1:
输入: [0,1,2,4,5,7]
输出: ["0->2","4->5","7"]
解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。
示例 2:
输入: [0,2,3,4,6,8,9]
输出: ["0","2->4","6","8->9"]
解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。
本题没有用什么特殊算法技巧,我们遍历整个数组,当数组的当前元素的后一位比前一位大1,就归并区间,直到后一位不比前一位大1即可。
思路也是比较简单的,代码如下:
class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> ans = new ArrayList<>();
int start = 0;
int end = nums.length;
while(start < end){
String tmp = new String();
tmp += nums[start];
int i = start;
while( i + 1 < end && nums[i] + 1 == nums[i+1]){
i++;
}
if(i != start){
tmp += "->"+nums[i];
start = i;
}
ans.add(tmp);
start++;
}
return ans;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
网友评论