自学内容网 自学内容网

力扣面试150 汇总区间 双指针 StringBuilder

Problem: 228. 汇总区间
在这里插入图片描述

👨‍🏫 参考题解

import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> ret = new ArrayList<String>(); // 存储结果的列表
        int i = 0; // 数组的当前下标
        int n = nums.length; // 数组的长度
        
        // 遍历数组
        while (i < n) {
            int low = i; // 记录区间的起始位置
            i++; // 移动到下一个元素
            
            // 检查相邻元素是否连续
            while (i < n && nums[i] == nums[i - 1] + 1) {
                i++; // 继续移动下标
            }
            
            int high = i - 1; // 记录区间的结束位置
            StringBuffer temp = new StringBuffer(Integer.toString(nums[low])); // 创建区间字符串的开头
            
            // 生成区间的字符串表示
            if (low < high) {
                temp.append("->"); // 如果是区间,添加 "->"
                temp.append(Integer.toString(nums[high])); // 添加区间的结束值
            }
            
            // 将生成的区间字符串添加到结果列表中
            ret.add(temp.toString());
        }
        
        return ret; // 返回所有的区间
    }
}

// 复杂度分析
// 时间复杂度:O(n),其中 n 为数组的长度。每个元素最多被访问两次。
// 空间复杂度:O(1)。除了用于输出的空间外,额外使用的空间为常数。

原文地址:https://blog.csdn.net/lt6666678/article/details/142896467

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!