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"].
例如,给定数组[0,1,2,4,5,7] ,应当返回["0->2","4->5","7"] (即数组里所有连续数字的范围,如果只有一个则返回它本身)
题目不难,然而之前头脑不清晰,想了好久才想出来。。。用了两个下标start和end,end往后搜索直到不满足范围条件,然后分end-1是否等于start来决定往字符串里输入的结果。
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> vec;
if(nums.size()==0) return vec;
int start=0,end=0;
while(end!=nums.size())
{
string temp;
for(end=start;end<nums.size();end++)
if(nums[end]!=nums[start]+end-start) break;
if((end-1)==start)
{
temp.append(to_string(nums[start]));
vec.push_back(temp);
}
else
{
temp.append(to_string(nums[start]));
temp.append("->");
temp.append(to_string(nums[end-1]));
vec.push_back(temp);
}
start=end;
}
return vec;
}
};
好吧,最近做题变少了,一直在忙于各种实验,准备参加比赛的事,然后无人机也要开始弄了。。。我尽量本周内做完所有easy的题吧