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

Example:

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

Java:

  1. class Solution {
  2. public List<String> findMissingRanges(int[] nums, int lower, int upper) {
  3. List<String> res = new ArrayList<String>();
  4. int next = lower;
  5. for (int i = 0; i < nums.length; i++) {
  6. // 1. We don't need to add [Integer.MAX_VALUE, ...] to result
  7. if(lower == Integer.MAX_VALUE) return res;
  8. if (nums[i] < next) {
  9. continue;
  10. }
  11. if (nums[i] == next) {
  12. next++;
  13. continue;
  14. }
  15. res.add(getRange(next, nums[i] - 1));
  16. // 2. We don't need to proceed after we have process Integer.MAX_VALUE in array
  17. if(nums[i] == Integer.MAX_VALUE) return res;
  18. next = nums[i] + 1;
  19. }
  20.  
  21. if (next <= upper) {
  22. res.add(getRange(next, upper));
  23. }
  24. return res;
  25. }
  26.  
  27. public String getRange(int n1, int n2) {
  28. return n1 == n2 ? String.valueOf(n1) : String.format("%d->%d" , n1, n2);
  29. }
  30.  
  31. }  

Java:

  1. public class Solution {
  2. public List<String> findMissingRanges(int[] A, int lower, int upper) {
  3. if(A==null) return null;
  4. List<String> res = new ArrayList<String>();
  5. for(int i=0; i<A.length; i++) {
  6. while(i<A.length && A[i] == lower ) {lower++; i++;}
  7. if(i>=A.length) break;
  8. if(A[i] == lower+1) {
  9. res.add(String.valueOf(lower));
  10. } else {
  11. res.add("" + lower + "->" + (A[i]-1) );
  12. }
  13. lower = A[i] + 1;
  14. }
  15.  
  16. if(lower == upper) {
  17. res.add(String.valueOf(lower));
  18. } else if(lower < upper ){
  19. res.add("" + lower + "->" + upper );
  20. }
  21. return res;
  22. }
  23. }  

Java:

  1. public class Solution {
  2. public List<String> findMissingRanges(int[] nums, int lower, int upper) {
  3. List<String> res = new ArrayList<>();
  4. if (nums == null || lower > upper) return res;
  5. for (int num : nums) {
  6. if (num - lower >= 1) res.add(getRangeString(lower, num - 1));
  7. lower = num + 1;
  8. }
  9. if (lower <= upper) res.add(getRangeString(lower, upper));
  10. return res;
  11. }
  12.  
  13. private String getRangeString(int lower, int upper) {
  14. if (lower == upper) return String.valueOf(lower);
  15. StringBuilder sb = new StringBuilder();
  16. sb.append(lower).append("->").append(upper);
  17. return sb.toString();
  18. }
  19. }  

Python:

  1. class Solution(object):
  2. def findMissingRanges(self, nums, lower, upper):
  3. """
  4. :type nums: List[int]
  5. :type lower: int
  6. :type upper: int
  7. :rtype: List[str]
  8. """
  9. def getRange(lower, upper):
  10. if lower == upper:
  11. return "{}".format(lower)
  12. else:
  13. return "{}->{}".format(lower, upper)
  14. ranges = []
  15. pre = lower - 1
  16.  
  17. for i in xrange(len(nums) + 1):
  18. if i == len(nums):
  19. cur = upper + 1
  20. else:
  21. cur = nums[i]
  22. if cur - pre >= 2:
  23. ranges.append(getRange(pre + 1, cur - 1))
  24.  
  25. pre = cur
  26.  
  27. return ranges  

C++:

  1. class Solution {
  2. public:
  3. vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {
  4. vector<string> res;
  5. int l = lower;
  6. for (int i = 0; i <= nums.size(); ++i) {
  7. int r = (i < nums.size() && nums[i] <= upper) ? nums[i] : upper + 1;
  8. if (l == r) ++l;
  9. else if (r > l) {
  10. res.push_back(r - l == 1 ? to_string(l) : to_string(l) + "->" + to_string(r - 1));
  11. l = r + 1;
  12. }
  13. }
  14. return res;
  15. }
  16. };

  

类似题目:

[LeetCode] 228. Summary Ranges 总结区间

All LeetCode Questions List 题目汇总

[LeetCode] 163. Missing Ranges 缺失区间的更多相关文章

  1. [leetcode]163. Missing Ranges缺失范围

    Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...

  2. LeetCode 163. Missing Ranges (缺失的区间)$

    Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...

  3. [LeetCode] Missing Ranges 缺失区间

    Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing r ...

  4. ✡ leetcode 163. Missing Ranges 找出缺失范围 --------- java

    Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...

  5. [LeetCode#163] Missing Ranges

    Problem: Given a sorted integer array where the range of elements are [lower, upper] inclusive, retu ...

  6. [LeetCode] 228. Summary Ranges 总结区间

    Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...

  7. 【LeetCode】163. Missing Ranges 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...

  8. 163. Missing Ranges

    题目: Given a sorted integer array where the range of elements are [lower, upper] inclusive, return it ...

  9. 【LeetCode】Missing Ranges

    Missing Ranges Given a sorted integer array where the range of elements are [lower, upper] inclusive ...

随机推荐

  1. JSX 到 JS 的转换

    在写react代码的时候,大部分同学应该都是写JSX.因为相比于写纯JavaScript.写JSX为我们去写组件,比写一些在JavaScript当中写类似于html结构的这种代码是要方便非常非常多的, ...

  2. windows查看文件MD5值的命令

    今天需要,就记录一下. certutil -hashfile filename MD5 certutil -hashfile filename SHA1 certutil -hashfile file ...

  3. APP测试之MONKEY安装、使用

    1.先下载java的jdk;配置java变量 安装好之后会有两个文件夹一个是jdk 一个是jre(运行)然后配置好java环境变量:JAVA_HOME:C:\Program Files\Java\jd ...

  4. Go——报错总结

    前言 前端时间抽时间看完了Go基础的一些内容,后面接着学习,记录一些错误. 错误 cannot refer to unexported name fmt.println 报错信息: # basic . ...

  5. Json在序列化getter导致的问题

    Java中的Json序列化,不容忽视的getter 问题重现 public class AjaxJson { private boolean success; private String msg; ...

  6. bShare分享插件|自定义分享按钮|异步加载分享解决办法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 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 & ...

  8. bfs与dfs小结

    1,bfs适合状态容易存储的题目,如果状态比较难存储,就难以进行记忆化搜索,必然会难以bfs. (比如听说滑雪这个题你用bfs会死得很难看) 2,但是有些题目会很深(比如网格单源最短路),用dfs会跑 ...

  9. Goexit

    package main import ( "fmt" "runtime" ) func test() { defer fmt.Println("cc ...

  10. elasticsearch安装和部署

    1.可以在官网上下载不同版本的es,官网地址为:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 2.解压elastics ...