[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 ...
随机推荐
- Java7与Java8中的HashMap和ConcurrentHashMap知识点总结
JAVA7 Java7的ConcurrentHashMap里有多把锁,每一把锁用于其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率呢.这 ...
- poj1734 Sightseeing trip(Floyd求无向图最小环)
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...
- 格式化字符串——初级% 和format
print '{a},{b}'.format(a='hello',b='word') st='a %s %s x y z' st1=('b','c') print st%st1 print '%s % ...
- 192-0070 Final project proposal
Final project proposal192-00701 – Summary of your project.It is based on an existing game which is c ...
- JQuery系列(2) - 事件处理
JQuery事件绑定 (1)on方法 on方法是jQuery事件绑定的统一接口.后面介绍的事件绑定的那些简便方法,其实都是on方法的简写形式. $('li').on('click', function ...
- centos7安装yum安装pip
pip是python中的一个包管理工具,可以对Python包的查找.下载.安装.卸载的作用. yum -y install epel-release yum -y install python-pip ...
- lombok常用注解@Data@AllArgsConstructor@NoArgsConstructor@Builder@Accessors
原贴:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992 https://blog.csdn.net/weixin_382293 ...
- 钟长者P71解题报告
T1 [题目描述] 给你N个字符串,你每次可以选择其中一个字符串的一段前缀进行翻转,但是你必须保证这个前缀的长度是偶数.你可以进行无限次这样的操作,并且如果两个字符串变得相同的时候,你就可以把这两个字 ...
- SDN初体验(软件定义网络实验一)
作业说明 本次实验步骤2.3是在机房环境下完成的,步骤1.4是在自己笔记本上重新配置完成的,所以环境.用户名什么的会略有差别. 1. 安装轻量级网络仿真工具Mininet 为了节约课程时间,实验室机房 ...
- 安装与配置HSDIS与JITWatch
本作者的系统: 操作系统版本及位数可通过uname -a命令查看,如下: Linux ubuntu 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul ...