Java 数组区间汇总算法:高效简洁代码实现
Java 数组区间汇总算法:高效简洁代码实现
给定一个无重复元素的有序整数数组 nums,需要返回恰好覆盖数组中所有数字的最小有序区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x。
算法实现:
class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> ranges = new ArrayList<>();
if (nums.length == 0) {
return ranges;
}
int start = nums[0];
int end = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] == end + 1) {
end = nums[i];
} else {
if (start == end) {
ranges.add(String.valueOf(start));
} else {
ranges.add(start + '->' + end);
}
start = nums[i];
end = nums[i];
}
}
if (start == end) {
ranges.add(String.valueOf(start));
} else {
ranges.add(start + '->' + end);
}
return ranges;
}
}
算法思路:
- 初始化两个变量
start和end,分别表示当前区间的起始和结束位置,并将其初始化为数组nums的第一个元素。 - 遍历数组
nums,对于每个元素,判断其是否与end相邻。- 如果相邻,则更新
end为当前元素。 - 如果不相邻,则将当前区间添加到
ranges列表中,并将start和end更新为当前元素。
- 如果相邻,则更新
- 处理最后一个区间,将其添加到
ranges列表中。
代码解析:
ranges列表用于存储最终的区间范围列表。start和end分别表示当前区间的起始和结束位置。- 循环遍历数组
nums,如果当前元素与end相邻,则更新end为当前元素。 - 如果当前元素与
end不相邻,则将当前区间添加到ranges列表中,并更新start和end为当前元素。 - 最后,处理最后一个区间,将其添加到
ranges列表中。
示例:
输入: nums = [0,1,2,4,5,6]
输出: ['0->2','4->6']
总结:
本文介绍了一种使用 Java 代码对无重复元素的排序整数数组进行区间汇总的算法,并提供了简洁高效的代码实现。该算法易于理解和实现,可用于解决各种需要对数组进行区间汇总的应用场景。
原文地址: https://www.cveoy.top/t/topic/ohv7 著作权归作者所有。请勿转载和采集!