C++實現(xiàn)LeetCode(163.缺失區(qū)間)
[LeetCode] 163. Missing Ranges 缺失區(qū)間
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, upper], return its missing ranges.
Example:
Input: nums = [0, 1, 3, 50, 75], lower = 0 and upper = 99,
Output: ["2", "4->49", "51->74", "76->99"]
這道題讓我們求缺失區(qū)間,跟之前那道 Summary Ranges 很類似,給了一個空間的范圍 [lower upper],缺失的區(qū)間的范圍需要在給定的區(qū)間范圍內(nèi)。遍歷 nums 數(shù)組,假如當前數(shù)字 num 大于 lower,說明此時已經(jīng)有缺失區(qū)間,至少缺失一個 lower 數(shù)字,此時若 num-1 大于 lower,說明缺失的是一個區(qū)間 [lower, num-1],否則就只加入一個數(shù)字即可。由于 OJ 之后加入了許多 tricky 的 test cases,使得論壇上很多解法都 fail 了。其實很多是跪在了整型溢出,當數(shù)組中有整型最大值時,此時 lower 更新為 num+1 時就會溢出,所以在更新之前要先判斷一下,若 num 已經(jīng)是整型最大值了,直接返回結(jié)果 res 即可;否則才更新 lower 繼續(xù)循環(huán)。for 循環(huán)退出后,此時可能還存在缺失區(qū)間,就是此時 lower 還小于等于 upper 時,可以會缺失 lower 這個數(shù)字,或者 [lower, upper] 區(qū)間,最后補上這個區(qū)間就可以通過啦,參見代碼如下:
class Solution { public: vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) { vector<string> res; for (int num : nums) { if (num > lower) res.push_back(to_string(lower) + (num - 1 > lower ? ("->" + to_string(num - 1)) : "")); if (num == upper) return res; lower = num + 1; } if (lower <= upper) res.push_back(to_string(lower) + (upper > lower ? ("->" + to_string(upper)) : "")); return res; } };
Github 同步地址:
https://github.com/grandyang/leetcode/issues/163
類似題目:
參考資料:
https://leetcode.com/problems/missing-ranges/
https://leetcode.com/problems/missing-ranges/discuss/50468/Accepted-Java-solution-8-lines-and-0ms
到此這篇關(guān)于C++實現(xiàn)LeetCode(163.缺失區(qū)間)的文章就介紹到這了,更多相關(guān)C++實現(xiàn)缺失區(qū)間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C++實現(xiàn)LeetCode(171.求Excel表列序號)
- C++實現(xiàn)LeetCode(168.求Excel表列名稱)
- C++實現(xiàn)LeetCode(167.兩數(shù)之和之二 - 輸入數(shù)組有序)
- C++實現(xiàn)LeetCode(166.分數(shù)轉(zhuǎn)循環(huán)小數(shù))
- C++實現(xiàn)LeetCode165.版本比較)
- C++實現(xiàn)LeetCode(164.求最大間距)
- C++實現(xiàn)LeetCode(228.總結(jié)區(qū)間)
- C++實現(xiàn)LeetCode(169.求大多數(shù))
相關(guān)文章
深入講解C++數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)函數(shù)的知識
這篇文章主要介紹了深入講解C++數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)函數(shù)的知識,包括類型轉(zhuǎn)換運算符函數(shù)等內(nèi)容,需要的朋友可以參考下2015-09-09C字符串函數(shù)對應(yīng)的C++ string操作詳解
在本篇文章里小編給大家整理的是一篇關(guān)于C字符串函數(shù)對應(yīng)的C++ string操作知識點內(nèi)容,有興趣的朋友們學(xué)習下。2020-01-01C++動態(tài)規(guī)劃實現(xiàn)查找最長公共子序列
這篇文章主要介紹了C++動態(tài)規(guī)劃最長公共子序列,在動態(tài)規(guī)劃中,你要將某個指標最大化。在這個例子中,你要找出最長公共子序列2022-06-06Qt連接數(shù)據(jù)庫并實現(xiàn)增刪改查操作
這篇文章主要為大家詳細介紹了Qt如何連接數(shù)據(jù)庫并實現(xiàn)增刪改查等基本操作,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下2023-09-09