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

For example, given [0, 1, 3, 50, 75]lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].


题目标签:Array

  题目给了我们一个nums array, lower 和 upper, 让我们遍历完nums 之后找到 从lower 到 upper 中缺失的区间。 首先设立一个 long start = lower;每一次遍历一个数字,都把start 更新为这个数字的下一个数字。如果当前的数字,比 start 大的话,那么说明遇到了缺失的区间,这里有可能只有一个数字缺失,也有可能至少两个数字缺失。当最后遍历完了nums, 还要检查一下start 是否等于 upper, 如果等于的话,说明 最后一个数字, upper 是缺失的; 如果start 小于 upper, 说明至少2个数字缺失。

我们来看一下例子:

[0, 1, 3, 50, 75], lower = 0, upper = 99;

start = 0;

遍历开始

1  3  50  75  当前数字 0 > start 0 ? 没有。 更新 start = 0 + 1,继续遍历;

0    3  50  75  当前数字 1 > start 1 ? 没有。 更新 start = 1 + 1,继续遍历;

0  1    50  75  当前数字 3 > start 2 ? 是的,说明有missing 的情况,这里只缺失一个数字,加入 res = ["2"],更新 start = 3 + 1,继续遍历;

0  1  3    75  当前数字 50 > start 4 ? 是的,说明有missing 的情况, 这里缺失至少2个数字, 加入 res = ["2", "4->49"],更新 start = 50 + 1,继续遍历;

0  1  3  50    当前数字 75 > start 51 ? 是的,说明有missing 的情况, 这里缺失至少2个数字,加入 res = ["2", "4->49", "51->74"], 更新 start = 75 + 1,遍历结束;

最后还要检查一下 start 76 == upper 还是 start 76 < upper, 这里小于,所以至少2个数字缺失, 加入 res = ["2", "4->49", "51->74", "76->99"]

注意的是,当 nums 里出现 2147483647 的时候,要注意 overflow。

Java Solution:

Runtime beats 14.29%

完成日期:09/01/2017

关键词:Array

关键点:一直更新start 并且 检测缺失的是一个数字或者多个数字

 class Solution
{
public List<String> findMissingRanges(int[] nums, int lower, int upper)
{
List<String> res = new ArrayList<>(); long start = lower; for(int i=0; i<nums.length; i++)
{
if(nums[i] > start) // meaning there is some range missing here
{
if(start == nums[i] - 1) // if only one number is missing
res.add("" + start);
else if(start < nums[i] - 1) // if more than one number is missing
res.add("" + start + "->" + (nums[i] - 1) );
} start = (long)nums[i] + (long)1; // update the start from current + 1 number for next round
} // check last possible missing range
if(start == upper) // meaning the previous one is upper - 1, so the upper is missing one here
res.add("" + start);
else if(start < upper) // meaning at least two numbers are missing
res.add("" + start + "->" + upper); return res;
}
}

参考资料:N/A

LeetCode 算法题目列表 - LeetCode Algorithms 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 nums, where the range of elements are in the inclusive range [lower, up ...

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

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

  4. [LeetCode#163] Missing Ranges

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

  5. [LeetCode] Missing Ranges 缺失区间

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

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

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

  7. 163. Missing Ranges

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

  8. 【LeetCode】Missing Ranges

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

  9. LC 163. Missing Ranges 【lock, hard】

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

随机推荐

  1. 笔记1 linux 多线程 互斥锁

    //mutex lock #include<stdio.h> #include<unistd.h> #include<pthread.h> struct test ...

  2. 用List传递学生信息

    集合在程序开发中经常用到,例如,在业务方法中将学生信息.商品信息等存储到集合中,然后作为方法的返回值返回给调用者,以此传递大量的有序数据. 本实例将使用List集合在方法之间传递学生的信息.实例效果如 ...

  3. Python shelve模块的使用方法

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import shelve,time #写 x = shelve. ...

  4. [LeetCode] 231 Power of Two && 326 Power of Three && 342 Power of Four

    这三道题目都是一个意思,就是判断一个数是否为2/3/4的幂,这几道题里面有通用的方法,也有各自的方法,我会分别讨论讨论. 原题地址:231 Power of Two:https://leetcode. ...

  5. AngularJS - 依赖注入(Dependency Injection)

    点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 依赖注入 依赖注入是软件设计模式中的一部分,用于处理组件是如何得到它说依赖的其它组件的. ...

  6. Maven(六)之依赖管理

    前面讲了maven一些关于Maven的简单知识,今天我给大家分享一些Maven的依赖管理.我相信用过maven的人都知道,它很重要的功能就是通过依赖来添加jar包. 让我们领略一下Maven是怎么管理 ...

  7. macbook 263企业邮箱设置

    第一步:打开邮箱,点击添加账号,选择其他 第二步:填写完整的电子邮件地址和密码 第三步:填写收件服务器(popcom.263xmail.com),发件服务器(smtpcom.263xmail.com)

  8. 封装好的图片滑动框架(AndroidImageSlider)

    前言 广告轮播条的重要性不言而喻.在很多类型app中出场率都很高. 今天给大家介绍一个轮播图开源项目,这个项目把轮播图需要的ViewPager跟计时器做了封装,使用极其方便,支持gradle在线依赖. ...

  9. Linux学习——yum学习和光盘yum源搭建

    在rmp安装的时代,rpm包依赖让安装人员头大,而且头疼,有了yum后整个的安装更加简单和方便. yum源文件 1.yum源的介绍: 将所有的软件包放到官方服务器上,当进行yum在线安装时,可以自动解 ...

  10. POJ1032 Parliament(数论)

    New convocation of The Fool Land's Parliament consists of N delegates. According to the present regu ...