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
class Solution { public: vector<string> summaryRanges(vector<int>& nums) { vector<string> ret; int len=nums.size(); if(len==0) return ret; int i=0,j=0; for(i=0;i<len;i++){ stringstream ss; string tmp; ss<<nums[i]; if(i==len-1||nums[i+1]-nums[i]>1){ ss>>tmp; ret.push_back(tmp); continue; } for(j=i;j<len;j++){ if(j+1<len){ if(nums[j+1]-nums[j]!=1) break;} else { ss<<"->"; ss<<nums[j]; ss>>tmp; ret.push_back(tmp); return ret; } } ss<<"->"; ss<<nums[j]; ss>>tmp; ret.push_back(tmp); i=j; } return ret; } };
原文:http://www.cnblogs.com/LUO77/p/5098113.html