懒人读算法(六)-查找剩余范围
来源:互联网 发布:mac改语言 编辑:程序博客网 时间:2024/05/18 00:07
趣味题
给出一组数组(给出最小值,给出最大值),返回剩余没有列出的值
如:给出 [0, 1, 3, 50, 75] 最小值为0,最大值为99则返回[“2”, “4->49”, “51->74”, “76->99”]
答案
public class Solution { public List<String> findMissingRanges(int[] nums, int lower, int upper) { ArrayList<String> result = new ArrayList<String>(); for(int i = 0; i <= nums.length; i++) { long start = i == 0 ? lower : (long)nums[i - 1] + 1; long end = i == nums.length ? upper : (long)nums[i] - 1; addMissing(result, start, end); } return result; } void addMissing(ArrayList<String> result, long start, long end) { if(start > end) { return; } else if(start == end) { result.add(start + ""); } else { result.add(start + "->" + end); } }}
解析:首先拿到题目会想,有一个数组,有一个最大值,有一个最小值。那么我们就要遍历所有的数组,
数组0,和最大时,start ,end 分别为最小值,和最大值,其余start为当前数组前一个+1,end 为当前数组的数字-1。拿到start和end 后按规则就可以解答出来了
核心思路:遍历数组,确立当前值,和上一个值
核心代码:
for(int i = 0; i <= nums.length; i++) { long start = i == 0 ? lower : (long)nums[i - 1] + 1; long end = i == nums.length ? upper : (long)nums[i] - 1; addMissing(result, start, end); }
阅读全文
0 0
- 懒人读算法(六)-查找剩余范围
- 六种查找算法
- 懒人读算法(一)-寻找名人
- 懒人读算法(二)-细胞问题
- 懒人读算法(七)-旋转矩阵
- 懒人读算法(八)-所有子集
- 懒人读算法(十)-区间总结
- 懒人读算法(十一)-找文字
- 二叉查找树范围查询算法
- 算法5-4:1d范围查找
- 范围查找
- 六种查找算法效率比较
- 六种查找算法效率比较
- [算法系列之六]二叉查找树
- 懒人读算法(三)-添加新区间
- 懒人读算法(四)-寻找最大连续值
- 懒人读算法(五)-求最大子数组
- 懒人读算法(九)-所有子集(有重复)
- 大数据常见问题数据倾斜
- 主元素
- Welcome to GBaseDBer’s blog
- linux搭建跳板机连接远程数据库
- 公司小程序项目开发有感
- 懒人读算法(六)-查找剩余范围
- Redis学习笔记1
- clang UndefinedBehaviorSanitizer
- [日推荐]『车轮查违章』车辆违章怎么办?这个小程序能帮你!
- 1075. 链表元素分类(25)
- Java多线程-线程同步
- windows下搭建VUE开发环境
- win10尘埃4点击开始游戏自动关闭没反应|dirt4.exe进程消失的解决方法
- 牛顿迭代法 求 根