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;
    }
}

算法思路:

  1. 初始化两个变量 start 和 end,分别表示当前区间的起始和结束位置,并将其初始化为数组 nums 的第一个元素。
  2. 遍历数组 nums,对于每个元素,判断其是否与 end 相邻。
    • 如果相邻,则更新 end 为当前元素。
    • 如果不相邻,则将当前区间添加到 ranges 列表中,并将 start 和 end 更新为当前元素。
  3. 处理最后一个区间,将其添加到 ranges 列表中。

代码解析:

  • ranges 列表用于存储最终的区间范围列表。
  • start 和 end 分别表示当前区间的起始和结束位置。
  • 循环遍历数组 nums,如果当前元素与 end 相邻,则更新 end 为当前元素。
  • 如果当前元素与 end 不相邻,则将当前区间添加到 ranges 列表中,并更新 start 和 end 为当前元素。
  • 最后,处理最后一个区间,将其添加到 ranges 列表中。

示例:

输入: nums = [0,1,2,4,5,6]
输出: ['0->2','4->6']

总结:

本文介绍了一种使用 Java 代码对无重复元素的排序整数数组进行区间汇总的算法,并提供了简洁高效的代码实现。该算法易于理解和实现,可用于解决各种需要对数组进行区间汇总的应用场景。

Java 数组区间汇总算法:高效简洁代码实现

原文地址: https://www.cveoy.top/t/topic/ohv7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录