163. Missing Ranges
题目:
Given a sorted integer array where the range of elements are [lower, upper] inclusive, 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"].
链接: http://leetcode.com/problems/missing-ranges/
题解:
查找丢失的range。这道题目主要注意一些边界条件。数组为空时要加入lower或者lower -> upper。不为空时可以先做一个特殊处理lower--,这样可以在变例数组的时候用条件getRangeAsString(lower + 1,nums[i] - 1)来把lower包括进来。遍历完毕数组之后要比较此时的lower以及upper,再尝试update list。
Time Complexity - O(n), Space Complexity - O(n)。
public class Solution {
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
List<String> res = new ArrayList<>();
if(nums == null)
return res;
if(nums.length == 0) {
res.add(getRangeAsString(lower, upper));
return res;
}
lower--; //to include lower;
for(int i = 0; i < nums.length; i++) {
if(nums[i] - lower >= 2) // lower always <= nums[i]
res.add(getRangeAsString(lower + 1, nums[i] - 1));
lower = nums[i];
}
if(upper > lower) // boundary condition, include upper
res.add(getRangeAsString(lower + 1, upper));
return res;
}
private String getRangeAsString(int lower, int upper) {
if(lower == upper)
return String.valueOf(lower);
StringBuilder sb = new StringBuilder();
sb.append(lower);
sb.append("->");
sb.append(upper);
return sb.toString();
}
}
二刷:
方法跟一刷一样,但更新了一下边界条件的写法。也是建立了一个辅助方法来返回单个字符或者一个range。 遍历数组的时候,每次当num - lower >= 1时,我们进行结果集的添加操作,然后更新lower = num + 1。遍历完毕以后要再check一下 lower 和 upper的关系。
Java:
Time Complexity - O(n), Space Complexity - O(n)。
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();
}
}
测试:
163. Missing Ranges的更多相关文章
- ✡ 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 163. Missing Ranges (缺失的区间)$
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...
- [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 ...
- LC 163. Missing Ranges 【lock, hard】
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...
- 【LeetCode】163. Missing Ranges 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...
- [LeetCode] Missing Ranges 缺失区间
Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing r ...
- LeetCode Missing Ranges
原题链接在这里:https://leetcode.com/problems/missing-ranges/ 题目: Given a sorted integer array where the ran ...
随机推荐
- selinux理解1-selinux介绍
安全增强式Linux(SELinux, Security-Enhanced Linux)是一种强制访问控制(mandatory access control)的实现.它的作法是以最小权限原则(prin ...
- ios开发之UIView的frame、bounds跟center属性的区别(附图)
博文暂时想到什么写什么,不顺理成章,不顺章成篇. 先看几个概念 坐标点Poit:向右侧为X轴正方向的值x,原点下侧为Y轴正方向的值y 大小Size:由宽度width和高度height构成,表示一个矩形 ...
- 2.1 JavaScript应用开发实践指南
创建交互层 循环 示例代码如下: var people = family, peopleCount = items.length, i; if(peopleCount>0){ for(i=0; ...
- seaJs 使用
开始使用seajs的时候折磨了我好一阵.光是各种概念就让新手难理解.现在弄清楚了,上个实践以备忘.目录结构如图. 1.文件 sea.html main.js a.js b.js c.js 最 ...
- springmvc(六)——视图和视图解析器
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAGrCAIAAADb2WEhAAAgAElEQVR4nOzdaVhTd78vfF8/z772c9 ...
- indeed 第二次笔试题
1. Maximal Values 很简单,从前往后扫,找满足的,O(n),很容易就过掉了. maxn = 100. 没啥难点. 2. Bi-gram 用map统计个数,从前往后扫,每2个字符作为一个 ...
- OCI_ERROE - errcode[1591],errmsg[ORA-01591:
CEASYDAO: 错误码[1591],错误信息[Error - OCI_ERROE - errcode[1591],errmsg[ORA-01591: lock held by in-doubt d ...
- Convert.ToInt32()与int.Parse()的区别 (转载)
Convert.ToInt32()与int.Parse()的区别(1)这两个方法的最大不同是它们对null值的处理:Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Pa ...
- 自己写的Python数据库连接类和sql语句拼接方法
这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...
- wpf 只在window是ShowDialog打开时才设置DialogResult
//only set DialogResult when window is ShowDialog before if(System.Windows.Interop.ComponentDispatch ...