博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】Missing Ranges
阅读量:6707 次
发布时间:2019-06-25

本文共 2113 字,大约阅读时间需要 7 分钟。

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"].

 

逐个数组元素遍历,将间隙取出即可。注意两边的情况。

class Solution {public:    vector
findMissingRanges(int A[], int n, int lower, int upper) { vector
ret; if(n == 0) return ret; string str; if(lower < A[0]) { if(lower < A[0]-1) str = to_string((long long)lower) + "->" + to_string((long long)A[0]-1); else //lower == A[0]-1 str = to_string((long long)lower); ret.push_back(str); } for(int i = 1; i < n; i ++) { if(A[i] - A[i-1] < 2) continue; if(A[i] - A[i-1] > 2) str = to_string((long long)A[i-1]+1) + "->" + to_string((long long)A[i]-1); else //A[i] - A[i-1] == 2 str = to_string((long long)A[i-1]+1); ret.push_back(str); } if(A[n-1] < upper) { if(A[n-1] < upper-1) str = to_string((long long)A[n-1]+1) + "->" + to_string((long long)upper); else //upper == A[n-1]+1 str = to_string((long long)upper); ret.push_back(str); } return ret; }};

 

以下是我的测试用例,全部通过:

void display(vector
& ret){ for(int i = 0; i < ret.size(); i ++) { cout << ret[i] << " "; } cout << endl;}int main(){ Solution s; int A[1]; //expect: ["0->9"] vector
ret = s.findMissingRanges(A, 0, 0, 9); display(ret); int B[1] = {
6}; //expect: ["0->5", "7->9"] ret = s.findMissingRanges(B, 1, 0, 9); display(ret); int C[3] = {
0, 1, 2}; //expect: [] ret = s.findMissingRanges(C, 3, 0, 2); display(ret); int D[5] = {
0, 1, 3, 50, 75}; //expect: ["2", "4->49", "51->74", "76->99"] ret = s.findMissingRanges(D, 5, 0, 99); display(ret);}

 

转载地址:http://mwilo.baihongyu.com/

你可能感兴趣的文章
Nginx--安装和配置
查看>>
网上邻居无法显示本地连接
查看>>
android:contentDescription的作用及使用方法
查看>>
在libvirt 中体验容器
查看>>
字符串类的重量级实现——Rope的初步了解
查看>>
数据库镜像和日志传送配合完成高可用性以及灾难恢复
查看>>
突破单位wifi限制
查看>>
Windows Server 2016 + Exchange 2016 +Office365混合部署(四)
查看>>
windows server 2008下载及序列号
查看>>
Solaris 10源码安装编译出错的一种处理办法
查看>>
Cocos2d-x 2.x编程之CCNotificationCenter
查看>>
Spark 的 Shell操作,核心概念,构建独立应用
查看>>
redis多实例重启脚本
查看>>
Lync 小技巧-16-查看Lync给谁打电话了
查看>>
在android中读取联系人信息的程序,包括读取联系人姓名、手机号码和邮箱
查看>>
Spring整合Hessian
查看>>
java中遇到过的String的一些特性
查看>>
在Django中调用exchange发送HTML邮件
查看>>
以一起数据灾难谈RAID0+1及RAID1+0
查看>>
OSPF报头及各种报文格式详解
查看>>