LeetCode 163. Missing Ranges (缺失的区间)$
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], 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 (缺失的区间)$的更多相关文章
- [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 nums, where the range of elements are in the inclusive range [lower, up ...
- ✡ 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] Missing Ranges 缺失区间
Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing r ...
- 【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 ...
- LC 163. Missing Ranges 【lock, hard】
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...
随机推荐
- Python的自学之路:Python基础(一)
声明:我写博客不是为了什么,只是为了记录自己的学习状态,学过的知识点!方便以后进行好的复习!python小白,勿喷 python环境的搭建,在这里就不细说了,这里有我的链接,可以参考一下:https: ...
- C#核心语法讲解-泛型(详细讲解泛型方法、泛型类、泛型接口、泛型约束,了解协变逆变)
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具 ...
- idea下使用autowire注解注入对象,结果初始化不到类
如果idea下使用autowire注解注入对象,结果初始化不到类,明明使用快捷键alt+insert是可以找到该注入的对象的. 而我们在使用的时候,缺报错了??? 注意,当我们在注入对象的时候,我们留 ...
- 纳税服务系统【用户模块之使用POI导入excel、导出excel】
前言 再次回到我们的用户模块上,我们发现还有两个功能没有完成: 对于将网页中的数据导入或导出到excel文件中,我们是完全没有学习过的.但是呢,在Java中操作excel是相对常用的,因此也有组件供我 ...
- 教你在Java接口中定义方法
基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClie ...
- [PHP源码阅读]number_format函数
上次讲到PHP是如何解析大整数的,一笔带过了number_format的处理,再详细阅读该函数的源码,以下是小分析. 函数原型 string number_format ( float $number ...
- Redis学习笔记之一 : 配置redis
Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久 ...
- [UIKit学习]03.关于UILable
代码创建UILabel UILabel *label = [[UILabel alloc] init]; label.text = @"单肩包"; label.frame = CG ...
- Angular4 后台管理系统搭建(9) - 用自定义angular指令,实现在服务端验证
最近这段时间发现,北京这用angular4 或 angular2的公司很少.几乎是没有.很担心自己是不是把精力放到了不应该的地方.白耽误了时间.但是随着我对新版angular框架理解的加深.个人感觉a ...
- SSH端口转发详解及实例
一.SSH端口转发简介 SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据.但是,SSH还能够将其他TCP端口的网络数据通SSH链接来转发,并且自动提供了相应的加密及解密服务.这一过程也被叫 ...