QUESTION
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”].
THOUGHT
这道题不难,但是需要考虑很多细节,数组长度为0,为1,为2.都要去考虑,这种题就是细节题。
CODE
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> res = new ArrayList<String>();
if(nums == null || nums.length == 0)
return res;
if(nums.length == 1){
res.add(nums[0] + "");
return res;
}
for(int i = 0;i < nums.length;i++){
int begin = nums[i];
while(i + 1 < nums.length && nums[i] + 1 == nums[i + 1])
i++;
if(nums[i] != begin)
res.add(begin + "->" + nums[i]);
else
res.add(begin + "");
}
return res;
}
}
RESULT
时间复杂度为O(n),space complexity is O(1);
二刷CODE
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> res = new ArrayList<>();
if(nums == null || nums.length ==0)
return res;
int i = 0;
while(i < nums.length){
int begain = nums[i];
while(i < nums.length - 1 && nums[i + 1] == nums[i] + 1)
i++;
if(nums[i] != begain)
res.add(begain + "->" + nums[i]);
else
res.add(begain + "");
i++;
}
return res;
}
}