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 ...
 
随机推荐
- Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理
			
一.概述 在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析, ...
 - html css 前端基础 学习方法及经验分享
			
前言: 入园第一天,想分享一点儿前端基础html css 的学习方法和一些经验给热爱前端,但是不知道从哪儿开始,依旧有些迷茫的新手朋友们.当然,适合每个人的学习方式不同,以下所讲的仅供参考. 一.关于 ...
 - “.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere
			
8月份已经发布了.NET Core 2.0, 大会Keynote 一开始花了大量的篇幅回顾.NET Core 2.0的发布,社区的参与度已经非常高.大会的主题是.NET 无处不在: NET Core ...
 - Mybatis第八篇【一级缓存、二级缓存、与ehcache整合】
			
Mybatis缓存 缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题. myba ...
 - Hibernate中fetch和lazy介绍
			
fetch ,指定关联对象抓取的方式,可以设置fetch = "select" 和 fetch = "join".select方式时先查询返回要查询的主体对象( ...
 - javaSE(九)之泛型(Generics)
			
前言 这几天分享了怎么搭建集群,这一篇给大家介绍的是泛型,在我们的很多java底层的源代码都是有很多复杂的泛型的!那什么是泛型呢? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是 ...
 - java基础解析系列(六)---深入注解原理及使用
			
java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer ja ...
 - Java平台与.Net平台在服务器端前景预测
			
如果是服务器端, 毫无疑问C#是很难跟Java拼的. 就算将来,微软逆袭的机会也很渺茫了.就技术的先进性来说, Java平台是不如.Net平台, 但是, 程序员对于两个平台,直接接触的基本以语言为主, ...
 - 系统学习java高并发系列三
			
转载请注明原创出处,谢谢! 首先需要说说线程安全?关于线程安全一直在提,比如StringBuilder和StringBuffer有什么区别? 经常就会出现关于线程安全与线程非安全,可能一直在提自己没有 ...
 - MySQL锁和事务(一):InnoDB锁(MySQL 官方文档粗翻)
			
// 写在前面,实际上,数据库加锁的类型和范围受到多种因素的影响,例如数据库隔离等级,SQL语句,是否使用主键.索引等等.可以查看博文: http://www.cnblogs.com/zhaoyl/p ...