LC 163. Missing Ranges 【lock, hard】
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, upper], return its missing ranges.
example:
Input: nums =[0, 1, 3, 50, 75], lower = 0 and upper = 99,
Output:["2", "4->49", "51->74", "76->99"]
这题应该是实现的细节处理,最大整数,最小整数比较难,也是调了很久的corner case才调出来的。
好不容易Accept了,自己写的还是有点惨。
还要注意
if(lower++ == something) something;
不管判断对不对,lower都会自增的,要当心。
AC第一版
#include <iostream>
#include <vector>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
}; vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {
vector<string> ret;
vector<int> processed;
for(int i=; i<nums.size(); i++){
if(processed.empty() || processed.back() != nums[i]){
processed.push_back(nums[i]);
}
}
nums.clear();
//for(auto i : processed) nums.push_back(i); for(auto i : processed) cout << i << " ";
cout << endl;
nums = processed;
if(lower == upper) {
if(!nums.empty()) return ret;
else ret.push_back(to_string(lower));
return ret;
}
if(nums.empty()){
ret.push_back(to_string(lower) + "->" + to_string(upper));
return ret;
}
for(int i=; i<nums.size(); i++){
//cout << lower << "and" << nums[i] << endl;
if (lower == nums[i]) {
lower++;
continue;
} if(lower+ == nums[i]) ret.push_back(to_string(lower));
else ret.push_back(to_string(lower) + "->" + to_string(nums[i]-));
if(nums[i] == ( << )-) return ret;
lower = nums[i]+;
}
//cout << lower << upper << endl;
if(lower > upper) return ret;
if(lower == upper) ret.push_back(to_string(lower));
else ret.push_back(to_string(lower) + "->" + to_string(upper));
return ret;
}
AC 第二版
简化了一些代码
vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {
vector<string> ret;
vector<int> processed;
// filter duplicate
for(auto val : nums) {
if(processed.empty() || processed.back() != val) processed.push_back(val);
}
nums.clear();
nums = processed;
// for(auto i : processed) cout << i << " ";
// cout << endl;
// corner case 1: lower == upper
if(lower == upper) {
if(nums.empty()) ret.push_back(to_string(lower));
return ret;
}
for(int i=; i<nums.size(); i++){
if (lower != nums[i]) {
if(lower+ == nums[i]) ret.push_back(to_string(lower));
else ret.push_back(to_string(lower) + "->" + to_string(nums[i]-));
}
if(nums[i] == ( << )-) return ret;
lower = nums[i]+;
}
//cout << lower << upper << endl;
if(lower == upper) ret.push_back(to_string(lower));
else if(lower < upper) ret.push_back(to_string(lower) + "->" + to_string(upper));
return ret;
}
LC 163. Missing Ranges 【lock, hard】的更多相关文章
- LC 660. Remove 9 【lock, hard】
Start from integer 1, remove any integer that contains 9 such as 9, 19, 29... So now, you will have ...
- LC 656. Coin Path 【lock, Hard】
Given an array A (index starts at 1) consisting of N integers: A1, A2, ..., AN and an integer B. The ...
- 【LeetCode】163. Missing Ranges 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...
- ✡ leetcode 163. Missing Ranges 找出缺失范围 --------- java
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...
- 163. Missing Ranges
题目: Given a sorted integer array where the range of elements are [lower, upper] inclusive, return it ...
- [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 ...
随机推荐
- layDate面板出现红色花纹图案
要使用layDate,有两种方法: 1. 要么在引用layui.js和layui.css,然后通过layui.use('laydate', callback) 加载模块后,调用方法使用. 2. 去la ...
- 抓住“新代码”的影子 —— 基于GoAhead系列网络摄像头多个漏洞分析
PDF 版本下载:抓住“新代码”的影子 —— 基于GoAhead系列网络摄像头多个漏洞分析 Author:知道创宇404实验室 Date:2017/03/19 一.漏洞背景 GoAhead作为世界上最 ...
- 06-【servletconfig、servletContext 】
ServletConfig.ServletContext 1.ServletConfig获取web.xml中的配置信息:java代码: @Override public void init(Servl ...
- PAT Basic 1051 复数乘法 (15 分)
复数可以写成 ( 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 1:也可以写成极坐标下的指数形式 (,其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (. 现给定两 ...
- XShell 假死
使用vim时因为使用windows word带来的坏习惯经常喜欢ctrl+s ,而这个造成的结果就是xshell假死,解决办法是ctrl+q
- JS 四种条件控制语句
// 1.if...else if (true) { console.log("TRUE1"); } else { console.log("TRUE2"); ...
- Vim常用插件命令手册
此文章记录了,笔者使用的插件中的主要命令. junegunn/vim-plug :PlugInstall 安装插件 :PlugClean 清理插件 :PlugUpgrade 升级插件管理器 :Plug ...
- SQL 修复表
alter database dcdata set single_user with rollback immediate设置为单用户模式然后执行修复.DBCC CHECKTABLE(ZLBZSGPH ...
- Xhorse Condor XC-Mini Plus回顾
Condor是Xhorse生产的最新型电子钥匙切割机.该机器在激光,圆柱和Tibbe键上具有出色的切割性能,几乎可以复制,切割,编码和解码任何汽车钥匙! Condor XC-MINI Plus的亮点: ...
- vueCli和脚手架
vue CLI相当于一个基于vue开发的框架:可以用来快速开发vue项目: 1.安装 由于需要用到npm命令,所以要先安装node.js: node.js下载地址:https://node ...