2025年--Lc173--H228.汇总区间(区间)--Java版
1.题目
2.思路
使用双指针,i是每个区间的起始位置,j从i开始向后遍历直到不满足连续递增(或j达到数组边界),则当前区间结束。然后i指向更新为j+1,作为下一个区间的起始位置,j继续向后遍历找下一个区间的结束位置。直到数组遍历结束。
3.代码实现
class Solution {public List<String> summaryRanges(int[] nums) {List<String> res=new ArrayList<>();//i指向第1个区间的起始位置int i=0;for(int j=0;j<nums.length;j++){//j向后遍历,直到不满足连续递增,nums[j]+1!=nums[j+1]//或者j到达数组边界,则连续递增区间[i,j]遍历完毕,写入结果数组if(j==nums.length-1 || nums[j]+1!=nums[j+1]){//将当前的区间[i,j]写入结果列表StringBuilder sb=new StringBuilder();sb.append(nums[i]);if(i!=j)//如果区间的左右边界不等,特定格式输出{sb.append("->").append(nums[j]);}res.add(sb.toString());//将i指向更新为j+1,作为下一个区间的起始位置i=j+1;}}return res;}
}