缺失的区间(区间)
九章算法 - 帮助更多程序员找到好工作硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧链接https://www.lintcode.com/problem/641/description分情况讨论1.nums[0]~lower第一个区间2.nums[1] ~nums.back() 中间缺失的区间3.nums.back()~upper最后一个区间class Solution { public: /** * param nums: a sorted integer array * param lower: An integer * param upper: An integer * return: a list of its missing ranges */ vectorstring findMissingRanges(vectorint nums, int lower, int upper) { // write your code here int len nums.size(); if (len 0) { if (lower ! upper) { return {to_string(lower) - to_string(upper)}; } else { return {to_string(lower)}; } } vectorstring result; int first nums[0]; if (first ! lower) { if (lower 1 ! first) { string tmp to_string(lower) - to_string(first-1); result.push_back(move(tmp)); } else { result.push_back(to_string(lower)); } } if (nums.size() 1) { for (int i 0; i len; i) { if (i 1 len) { if (nums[i] ! nums[i1] nums[i] 1 ! nums[i1]) { if (nums[i]1 ! nums[i1]-1) { string tmp to_string(nums[i]1) - to_string(nums[i1]-1); result.push_back(move(tmp)); } else { result.push_back(to_string(nums[i]1)); } } } } int back nums.back(); if (back ! upper) { if (back1 ! upper) { string tmp to_string(back1) - to_string(upper); result.push_back(move(tmp)); } else { result.push_back(to_string(back1)); } } } else { if (first ! upper) { if (first1 ! upper) { string tmp to_string(first1) - to_string(upper); result.push_back(move(tmp)); } else { result.push_back(to_string(first1)); } } } return result; } };