[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 ...
随机推荐
- JSX 到 JS 的转换
在写react代码的时候,大部分同学应该都是写JSX.因为相比于写纯JavaScript.写JSX为我们去写组件,比写一些在JavaScript当中写类似于html结构的这种代码是要方便非常非常多的, ...
- windows查看文件MD5值的命令
今天需要,就记录一下. certutil -hashfile filename MD5 certutil -hashfile filename SHA1 certutil -hashfile file ...
- APP测试之MONKEY安装、使用
1.先下载java的jdk;配置java变量 安装好之后会有两个文件夹一个是jdk 一个是jre(运行)然后配置好java环境变量:JAVA_HOME:C:\Program Files\Java\jd ...
- Go——报错总结
前言 前端时间抽时间看完了Go基础的一些内容,后面接着学习,记录一些错误. 错误 cannot refer to unexported name fmt.println 报错信息: # basic . ...
- Json在序列化getter导致的问题
Java中的Json序列化,不容忽视的getter 问题重现 public class AjaxJson { private boolean success; private String msg; ...
- bShare分享插件|自定义分享按钮|异步加载分享解决办法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- P2915 [USACO08NOV] Mixed Up Cows
题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...
- bfs与dfs小结
1,bfs适合状态容易存储的题目,如果状态比较难存储,就难以进行记忆化搜索,必然会难以bfs. (比如听说滑雪这个题你用bfs会死得很难看) 2,但是有些题目会很深(比如网格单源最短路),用dfs会跑 ...
- Goexit
package main import ( "fmt" "runtime" ) func test() { defer fmt.Println("cc ...
- elasticsearch安装和部署
1.可以在官网上下载不同版本的es,官网地址为:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 2.解压elastics ...