Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given
[0,1,2,4,5,7], return ["0->2","4->5","7"].
A:
就是挨个数呗
------------一点小技巧就是每次遇到一个数字的时候,决定前面的。 这样,就需要在for 循环之后再查看一遍----------
public class Solution {
List<String> res = new LinkedList();
for(int i =0;i < nums.length ; i++){
int start = nums[i];
String str = ""+start;
while( i+1< nums.length && nums[i+1] == nums[i]+1)
i++;
if(start != nums[i])
str += "->"+nums[i];
res.add(str);
}
return res;
}
}
--------思路同上, 但是用了递归——————————
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> res = new LinkedList<>();
helper(nums, res, 0);
return res;
}
public void helper(int[] nums, List<String> res, int i){
int n = nums.length;
if(i >= n)
return;
int start = nums[i];
while(i+1<n && nums[i+1] == nums[i] + 1){
i++;
}
int end = nums[i];
if(start == end)
res.add("" + start);
else
res.add( "" + start + "->" + end);
helper(nums,res, i+1);
}
}
Mistakes:
No comments:
Post a Comment