LeetCode Missing Ranges

原题链接在这里:https://leetcode.com/problems/missing-ranges/

题目:

Given a sorted integer array nums, where the range of elements are in the inclusive range [lowerupper], return its missing ranges.

Example:

Input: nums = [0, 1, 3, 50, 75], lower = 0 and upper = 99,
Output: ["2", "4->49", "51->74", "76->99"]

题解:

If nums is null or empty, just add getRange(lower, upper).

Otherwise, first add range between lower and nums[0].

Then add missing range within nums.

Last, add range between nums[nums.length - 1] and upper.

Time Complexity: O(n). n = nums.length.

Space: O(1). regardless res.

AC Java:

 class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> res = new ArrayList<>();
if(nums == null || nums.length == 0){
res.add(getRange(lower, upper));
return res;
} if(lower < nums[0]){
res.add(getRange(lower, nums[0] - 1));
} for(int i = 1; i<nums.length; i++){
if(nums[i - 1] != nums[i] && nums[i - 1] + 1 != nums[i]){
res.add(getRange(nums[i - 1] + 1, nums[i] - 1));
}
} if(nums[nums.length - 1] < upper){
res.add(getRange(nums[nums.length - 1] + 1, upper));
} return res;
} private String getRange(int l, int r){
if(l == r){
return "" + l;
} return l + "->" + r;
}
}

类似Summary RangesData Stream as Disjoint Intervals.

上一篇:bootstrap--组件之按钮式下拉菜单


下一篇:接口测试3-2csv格式