题目
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.
Subscribe to see which companies asked this question.
思路
入参保证sorted,遍历数组,求出一段连续的就存到返回值中,尤其注意begin和end为同一个数和最后一个字符串的场景
代码
class Solution {public: void insertString(vector<string> &result,int beginNum,int endNum) { if(beginNum == endNum) { result.push_back(to_string(beginNum)); } else { //连续的字符串 result.push_back(to_string(beginNum)+"->"+to_string(endNum)); } } vector<string> summaryRanges(vector<int>& nums) { //用例保证入参sorted int beginNum; int endNum; int curNum; vector<string> result; size_t length = nums.size(); string str; if(length == 0) { return result; } beginNum = curNum = endNum = nums[0]; for(size_t i=1;i<length;i++) { if(nums[i] - curNum == 1) { endNum = nums[i]; curNum = nums[i]; continue; } else { insertString(result,beginNum,endNum); beginNum = curNum = endNum = nums[i]; } } //最后,看是否要插入最后的字符串 insertString(result,beginNum,endNum); return result; }};