LeetCode 163. 缺失的区间
题目描述
给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。
示例:
输入: nums = [0, 1, 3, 50, 75], lower = 0 和 upper = 99,
输出: [“2”, “4->49”, “51->74”, “76->99”]
一、解题关键词
数组本身有序 拆分进行比较
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> ans = new ArrayList<>();
int len = nums.length;
if (len == 0) {
ans.add(helper(lower - 1, upper + 1));
return ans;
}
if (lower < nums[0]) {
ans.add(helper(lower - 1, nums[0]));
}
for (int idx = 0; idx < len - 1; ++idx) {
if (nums[idx] + 1 != nums[idx + 1]) {
ans.add(helper(nums[idx], nums[idx + 1]));
}
}
if (upper > nums[len - 1]) {
ans.add(helper(nums[len - 1], upper + 1));
}
return ans;
}
String helper(int left, int right) {
StringBuilder builder = new StringBuilder();
if (left + 2 == right) {
builder.append(left + 1);
} else {
builder.append(left + 1).append("->").append(right - 1);
}
return builder.toString();
}
}
2.知识点