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"].
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
因为数组是排好序的,这里用两个指针表示指向的头一个数first和最后一个数last,首先第一个数字和下一个数字进行判断,是否是加1的,如果是last指针加一,到不满足关系的时候,保存fist和last指针的数,形成字符串,同时first和last指针同时指向下一个数,在继续进行遍历,主要是要判断最后几个数是够满足关系,判断fist和last指针是否相等,,,,,,
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> result;
int n = nums.size();
if (n < 1)
{
return result;
}
int left = 0;
int right = 0;
char temp[100];
for (int i = 1; i < n; i++)
{
if (nums[i] == nums[right]+1)
{
right = i;
}
else
{
sprintf(temp, "%d", nums[left]);
string str(temp);
if (left != right)
{
sprintf(temp, "%d", nums[right]);
str += "->" + string(temp);
}
result.push_back(str);
left = right = i;
}
}
sprintf(temp, "%d", nums[left]);
string str(temp);
if (left != right)
{
sprintf(temp, "%d", nums[right]);
str += "->" + string(temp);
}
result.push_back(str);
return result;
}
};