[LeetCode] 163. Missing Ranges 缺失区间
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, upper], 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"]
Java:
class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> res = new ArrayList<String>();
int next = lower;
for (int i = 0; i < nums.length; i++) {
// 1. We don't need to add [Integer.MAX_VALUE, ...] to result
if(lower == Integer.MAX_VALUE) return res;
if (nums[i] < next) {
continue;
}
if (nums[i] == next) {
next++;
continue;
}
res.add(getRange(next, nums[i] - 1));
// 2. We don't need to proceed after we have process Integer.MAX_VALUE in array
if(nums[i] == Integer.MAX_VALUE) return res;
next = nums[i] + 1;
}
if (next <= upper) {
res.add(getRange(next, upper));
}
return res;
}
public String getRange(int n1, int n2) {
return n1 == n2 ? String.valueOf(n1) : String.format("%d->%d" , n1, n2);
}
}
Java:
public class Solution {
public List<String> findMissingRanges(int[] A, int lower, int upper) {
if(A==null) return null;
List<String> res = new ArrayList<String>();
for(int i=0; i<A.length; i++) {
while(i<A.length && A[i] == lower ) {lower++; i++;}
if(i>=A.length) break;
if(A[i] == lower+1) {
res.add(String.valueOf(lower));
} else {
res.add("" + lower + "->" + (A[i]-1) );
}
lower = A[i] + 1;
}
if(lower == upper) {
res.add(String.valueOf(lower));
} else if(lower < upper ){
res.add("" + lower + "->" + upper );
}
return res;
}
}
Java:
public class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> res = new ArrayList<>();
if (nums == null || lower > upper) return res;
for (int num : nums) {
if (num - lower >= 1) res.add(getRangeString(lower, num - 1));
lower = num + 1;
}
if (lower <= upper) res.add(getRangeString(lower, upper));
return res;
}
private String getRangeString(int lower, int upper) {
if (lower == upper) return String.valueOf(lower);
StringBuilder sb = new StringBuilder();
sb.append(lower).append("->").append(upper);
return sb.toString();
}
}
Python:
class Solution(object):
def findMissingRanges(self, nums, lower, upper):
"""
:type nums: List[int]
:type lower: int
:type upper: int
:rtype: List[str]
"""
def getRange(lower, upper):
if lower == upper:
return "{}".format(lower)
else:
return "{}->{}".format(lower, upper)
ranges = []
pre = lower - 1 for i in xrange(len(nums) + 1):
if i == len(nums):
cur = upper + 1
else:
cur = nums[i]
if cur - pre >= 2:
ranges.append(getRange(pre + 1, cur - 1)) pre = cur return ranges
C++:
class Solution {
public:
vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {
vector<string> res;
int l = lower;
for (int i = 0; i <= nums.size(); ++i) {
int r = (i < nums.size() && nums[i] <= upper) ? nums[i] : upper + 1;
if (l == r) ++l;
else if (r > l) {
res.push_back(r - l == 1 ? to_string(l) : to_string(l) + "->" + to_string(r - 1));
l = r + 1;
}
}
return res;
}
};
类似题目:
[LeetCode] 228. Summary Ranges 总结区间
All LeetCode Questions List 题目汇总
[LeetCode] 163. Missing Ranges 缺失区间的更多相关文章
- [leetcode]163. Missing Ranges缺失范围
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...
- LeetCode 163. Missing Ranges (缺失的区间)$
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...
- [LeetCode] Missing Ranges 缺失区间
Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing r ...
- ✡ leetcode 163. Missing Ranges 找出缺失范围 --------- java
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...
- [LeetCode#163] Missing Ranges
Problem: Given a sorted integer array where the range of elements are [lower, upper] inclusive, retu ...
- [LeetCode] 228. Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- 【LeetCode】163. Missing Ranges 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...
- 163. Missing Ranges
题目: Given a sorted integer array where the range of elements are [lower, upper] inclusive, return it ...
- 【LeetCode】Missing Ranges
Missing Ranges Given a sorted integer array where the range of elements are [lower, upper] inclusive ...
随机推荐
- python测试开发django-rest-framework-60.使用token登录(authentication之TokenAuthentication)
前言 现在很多接口项目在登录的时候返回一个token,登录后的拿着这个token去访问访问登录之后的请求. 本篇使用djangorestframework框架写一个登陆的接口,登录成功后返回token ...
- selenium常用的API(六)浏览器窗口切换
当使用selenium webdriver进行自动化测试打开多个窗口的时候,可能需要在不同的窗口间进行切换,webdriver提供的获取浏览器窗口句柄.切换句柄的方法如下: 获取当前窗口句柄 driv ...
- 深度学习Keras框架笔记之Activation类使用
使用 keras.layers.core.Activation(activation) Apply an activation function tothe input.(貌似是把激活函数应用到输入数 ...
- dimensionality reduction动机---data compression(使算法提速)
data compression可以使数据占用更少的空间,并且能使算法提速 什么是dimensionality reduction(维数约简) 例1:比如说我们有一些数据,它有很多很多的feat ...
- Codechef:Fibonacci Number/FN——求通项+二次剩余+bsgs
题意 定义 $F_n$ 为 $$F_n = \left\{\begin{matrix}0, n=0\\ 1, n=1 \\F_{n-1} + F_{n-2}, n > 1\end{matrix} ...
- Sliding Window Matrix Maximum
Description Given an array of n * m matrix, and a moving matrix window (size k * k), move the window ...
- Bootstrap内栅格布局,表格,按钮,图片的个人总结
栅格布局: container,固定宽度的容器. container-fluid,百分百宽度的容器. 使用行(row)在水平方向上创建一组列(colmun). 每一行中最多能够包含12列,超出的列则另 ...
- Spark-源码分析01-Luanch Driver
1.SparkSubmit.scala 什么是Driver 呢?其实application运行的进程 就是driver,也是我们所写的代码就是Driver. object DefaultPartiti ...
- POJ P1985 Cow Marathon 题解
这道题是我们考试的第一题,非常水,就是一个树的直径的板子.详见上一篇博客. #include<iostream> #include<cstdio> #include<cs ...
- php web开发——文件夹的上传和下载
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...