这题可以用区间来做,区间是什么,在编程问题中,区间常用于表示连续的数字集合,比如这道题【0,2】就表示0,1,2这样的数字集合。
所以这道题首先定义一个字符数组用来存输出结果,然后定义一个变量,用来存储起始位置,如果找不到和它连续的数,则将这个单个字符存入字符数组,否则继续遍历,直到没有相邻数字,代码如下。
class Solution {public List<String> summaryRanges(int[] nums) {// 返回恰好覆盖数组中所有数字的最小有序区间范围列表。 nums中每个元素恰好被区间覆盖,并且不存在某个范围但不属于nums的数字xList<String>ranges=new ArrayList<>();if(nums.length==0||nums==null){return ranges;}int start=nums[0];//当前区间的起点for(int i=1;i<=nums.length;i++){// 检查当前数字是否不连续if(i==nums.length||nums[i]!=nums[i-1]+1){//当前区间结束if(start==nums[i-1]){ranges.add(String.valueOf(start));}else{ranges.add(start+"->"+nums[i-1]);}// 更新下一个起始点if(i<nums.length){start=nums[i];}}}return ranges;}
}