Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
Input: [0,1,2,4,5,7] Output: ["0->2","4->5","7"] Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
Example 2:
Input: [0,2,3,4,6,8,9] Output: ["0","2->4","6","8->9"] Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
这一题着实其实是medium中的easy题。做法和思路都比较简单
只需要遍历一次数组,用某种方式记录连续增长的区域就好。
在遍历每一个数字的时候判断下一个是否是这个的 + 1, 是的话就统计连续的长度,否则就根据连续的长度进行输出。
public List<String> summaryRanges(int[] nums) {
int cnt = 0;
List<String> result = new LinkedList<String>();
for (int i = 0; i < nums.length; i++) {
if ((i < nums.length - 1) && (nums[i] + 1 == nums[i + 1])) {
cnt++;
} else {
if (cnt > 0) {
result.add((nums[i] - cnt) + "->" + nums[i]);
} else {
result.add("" + nums[i]);
}
cnt = 0;
}
}
return result;
}
本文介绍了一种简单有效的算法,用于处理已排序且不含重复元素的整数数组,通过单次遍历找出并汇总所有连续的数值范围。例如,对于输入[0,1,2,4,5,7],输出为[0->24->57]。文章详细解释了算法的具体实现过程。
400

被折叠的 条评论
为什么被折叠?



