defsummary_ranges (nums) Summary= []; ifNums.size = =0returnSummary EndifNums.size = = 1returnSummary <<nums[0].to_s End Head=Nums[0] Nums.each_index do|i|Nextifi = =0ifNums[i] = = Nums.last && nums[i]! = nums[i-1] + 1 && head = = nums[i-1] Summary<< nums[i-1].to_s Summary<<nums[i].to_s elsif Nums[i]= = Nums.last && nums[i]! = nums[i-1] + 1 && head! = nums[i-1] Summary<<"#{head}->#{nums[i-1]}"Summary<<nums[i].to_s elsif Nums[i]= = Nums.last && Nums[i] = = Nums[i-1] + 1Summary<<"#{head}->#{nums[i]}"elsif Nums[i]! = Nums[i-1] + 1 && head = = nums[i-1] Summary<< nums[i-1].to_s Head=Nums[i] elsif nums[i]! = Nums[i-1] + 1 && head! = nums[i-1] Summary<<"#{head}->#{nums[i-1]}"Head=Nums[i] End end Summaryend
vector<string> Summaryranges (vector<int>&nums) {size_t len=nums.size (); Vector<string>Summary; if(len = =0){ returnSummary; } if(len = =1) {summary.push_back (to_string (nums[0])); returnSummary; } Auto Begin=Nums.front (); for(size_t i =1; i < Len; ++i) { if(Nums[i] = = Nums.back () && nums[i]! = nums[i-1] +1&& begin = = Nums[i-1]) {Summary.push_back (to_string (nums[i-1])); Summary.push_back (to_string (nums[i)); } Else if(Nums[i] = = Nums.back () && nums[i]! = nums[i-1] +1&& begin! = nums[i-1]) {summary.push_back (to_string (BEGIN)+" -"+ to_string (Nums[i-1])); Summary.push_back (to_string (nums[i)); } Else if(Nums[i] = = Nums.back () && nums[i] = = (Nums[i-1] +1) {summary.push_back (to_string (BEGIN)+" -"+to_string (Nums[i])); } Else if(Nums[i]! = nums[i-1] +1&& begin = = Nums[i-1]) {Summary.push_back (to_string (nums[i-1])); Begin=Nums[i]; } Else if(Nums[i]! = nums[i-1] +1&& begin! = nums[i-1]) {summary.push_back (to_string (BEGIN)+" -"+ to_string (Nums[i-1])); Begin=Nums[i]; } } returnSummary;}
The
is called ... Summarize an array?