Missing Ranges
Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its missing ranges.
For example, given
[0, 1, 3, 50, 75]
, lower = 0 and upper = 99, return["2", "4->49", "51->74", "76->99"].
check stores the current number we want to check in the nums.
if check appears in the nums, check++, go to next loop
else, test if it is a single word or a range covers several words.
push_back upper + 1 in to the nums array would dramatically simplify the structure in our program.
class Solution { public: vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) { vector<string> ans; string str; int check = lower; nums.push_back(upper + 1);//overflow? for(int num: nums){ if(check == num){ //continues check++; } else{ //not continues int end = num - 1; if(end == check){ //single number missing str.clear(); str.append(to_string(check)); ans.push_back(str); } else{ //a range of numbers missing str.clear(); str.append(to_string(check)); str.append("->"); str.append(to_string(end)); ans.push_back(str); } check = num + 1; } } return ans; } };