这道题我写代码写的优点乱了。定义一个最初的起始位置(也就是范围的第一个)first,然后循环,nums[i]=nums[i-1],就继续循环。直到nums[i]!=nums[i-1]+1在做处理,范围就是first到nums[i-1],但如果first==nums[i-1] ,就输出“first”,其他输出”first->nums[i-1]”,还有一种特殊情况也就是i==nums.length-1,末尾,在判断最后一次,这道题1ms
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> list = new ArrayList<>();
if(nums.length==0)return list;
if(nums.length==1){list.add(""+nums[0]);return list;}
int first =nums[0];
String str = new String("");
for(int i=1;i<nums.length;i++){
if(nums[i]==nums[i-1]+1){
if(i==nums.length-1){
str = first+"->"+nums[i];
list.add(str);
break;
}
continue;
}else{
if(i==nums.length-1){
if(first == nums[i-1]){
str = first+"";
list.add(str);
}else{
str = first+"->"+nums[i-1];
list.add(str);
}
list.add(""+nums[i]);
break;
}
if(first == nums[i-1]){
str = first+"";
list.add(str);
first = nums[i];
}else{
str = first+"->"+nums[i-1];
list.add(str);
first = nums[i];
}
}
}
return list;
}
}
本文介绍了一个用于处理整数数组的有效算法,该算法可以快速找出数组中连续递增元素的范围,并将其格式化为字符串列表返回。通过对数组进行一次遍历,实现1ms内完成任务的目标。适用于需要对大量连续数值进行区间划分的场景。
392

被折叠的 条评论
为什么被折叠?



