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

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)。除了用于输出的空间外,额外使用的空间为常数。
上一篇:初识mysql


下一篇:leetcode---素数,最小质因子,最大公约数