leetcode:算法题163 缺失的区间
给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。
示例:
输入: nums = [0, 1, 3, 50, 75], lower = 0 和 upper = 99,
输出: [“2”, “4->49”, “51->74”, “76->99”]
class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
LinkedList<String> list = new LinkedList();
long pre = (long)lower -1 ;//防止溢出
for(int i =0;i<nums.length;i++){
if(nums[i]-pre ==2){
list.add(String.valueOf(pre+1));
}
if(nums[i]-pre>2){
list.add((pre+1)+"->"+(nums[i]-1));
}
pre = nums[i]; // long->int
}
if (upper - pre == 1) {
results.add(String.valueOf(upper));
} else if (upper - pre > 1) {
results.add((pre + 1) + "->" + upper);
}
}
}
上面将int转为String的时候使用的是String.valueof()而不是 数字+"" ,是因为 String.valueof()的效率高