LeetCode OJ:Summary Ranges(概括区间)
Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].
就是概括区间的方式把一个数组表示下来,例如123用1->3代替,自己写的很乱 ,维护两个指针就可以了:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
int start = ;
stringstream str;
vector<string> ret;
int sz = nums.size();
if(sz == ) return ret;
if(sz == ){
str << nums[];
ret.push_back(str.str());
return ret;
}
//str << nums[0];
start = nums[];
for(int i = ; i < sz; ++i){
if(nums[i] == nums[i-] + ) continue;
if(start != nums[i - ]) //防止单个数字是一个区间的情况
str << start << "->" << nums[i - ];
else
str << start;
ret.push_back(str.str());
start = nums[i];
str.str("");
}
if(nums[sz - ] == nums[sz - ] + ){
str << start << "->" << nums[sz - ];
ret.push_back(str.str());
}else{
str << nums[sz - ];
ret.push_back(str.str());
}
return ret;
}
};
下面是用java写, 双指针, 比上面简单很多啊,代码如下:(注意,以后遇到双指针的问题,尽量不要用for循环,而应该使用while,自己移动指针,不容易出错(其实也是使用习惯问题))
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> ret = new ArrayList<String>();
for(int p1 = 0, p2 = 0; p1 < nums.length; ++p1){
while(p1+1 < nums.length && nums[p1+1] == nums[p1]+1)
p1++;
if(p1 == p2)
ret.add(String.valueOf(nums[p1]));
else
ret.add(String.valueOf(nums[p2]) + "->" + String.valueOf(nums[p1]));
p2 = p1 + 1;//注意 ,这里p1不更新的原因是for循环还会为P1加上1, 当时没注意查了好久的bug
}
return ret;
}
}
LeetCode OJ:Summary Ranges(概括区间)的更多相关文章
- [LeetCode] 228. Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- [LeetCode] 163. Missing Ranges 缺失区间
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...
- [LeetCode] Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- LeetCode 228. Summary Ranges (总结区间)
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- [leetcode]228. Summary Ranges区间统计
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- leetcode:Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- C#解leetcode 228. Summary Ranges Easy
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- Java for LeetCode 228 Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- LeetCode(228) Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- (easy)LeetCode 228.Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
随机推荐
- springMVC中使用 RequestBody 及 Ajax POST请求 415 (Unsupported Media Type)
使用POST请求的时候一直报错: Ajax 未设置 contentType 时会报 415 . 后台 RequestBody 承接前台参数,故对参数data的要求为“必传”“JSON”,否则会报40 ...
- Linux基础系列:常用命令(3)
作业一: ) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/.txt(覆盖) cat /etc/passwd /etc/group > /test/.txt ) 将用户信息数据库文件 ...
- Fidder详解之抓包
前言 本文是博主发表的第一篇文章,如有傻逼之处,请大家见谅.最近遇到很多人说接口相关的问题,比如:什么是接口,我该怎么做接口测试,还有我总是抓不到APP上的https请求(这个巨坑,不知道坑了多少小白 ...
- 023_数量类型练习——Hadoop MapReduce手机流量统计
1) 分析业务需求:用户使用手机上网,存在流量的消耗.流量包括两部分:其一是上行流量(发送消息流量),其二是下行流量(接收消息的流量).每种流量在网络传输过程中,有两种形式说明:包的大小,流量的大小. ...
- 用matlab将nc数据读出来,写成二进制文件,然后用grads画图
clear,clc nt=735;ny=73; %2.5*2.5格点的nx=144; %2.5*2.5格点的f=netcdf('air.mon.mean.nc','nowrite');tt ...
- CSS实现三角形图标的原理!!!!今天总算弄懂了。
网页中经常有一种三角形的图标,鼠标点一下会弹出一个下拉菜单之类的(之前淘宝也有,不过现在改版好像没有了) 之前以为是个png图标背景,后来在bootstrap中看到有一个图标样式叫做caret的用来实 ...
- 【收藏】SearchCrawler By James Holmes
转自Crawling the Web with Java By James Holmes 无需任何扩展包,可直接运行. import java.awt.*; import java.awt.event ...
- Django-实现图片验证码
Django实现图片验证码 Python生成随机验证码,需要使用PIL模块. pip3 install pillow 1.基本使用 1. 1 创建图片 from PIL import Image im ...
- [APIO2013]机器人
题目描述 VRI(Voltron 机器人学会)的工程师建造了 n 个机器人.任意两个兼容的机 器人站在同一个格子时可以合并为一个复合机器人. 我们把机器人用 1 至 n 编号(n ≤ 9).如果两个机 ...
- ASP.NET5 MVC6 利用Middleware 创建可访问HttpContext 的业务类工厂。(代替HttpContext.Current)
我们的目标是在后台业务处理类中,能够很容易的取得用户信息或者其它HTTP请求相关的信息. 所以,首先我们需要一个存储这些信息的类: public class RequestData { public ...