C++實(shí)現(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 很類似,給了一個(gè)空間的范圍 [lower upper],缺失的區(qū)間的范圍需要在給定的區(qū)間范圍內(nèi)。遍歷 nums 數(shù)組,假如當(dāng)前數(shù)字 num 大于 lower,說(shuō)明此時(shí)已經(jīng)有缺失區(qū)間,至少缺失一個(gè) lower 數(shù)字,此時(shí)若 num-1 大于 lower,說(shuō)明缺失的是一個(gè)區(qū)間 [lower, num-1],否則就只加入一個(gè)數(shù)字即可。由于 OJ 之后加入了許多 tricky 的 test cases,使得論壇上很多解法都 fail 了。其實(shí)很多是跪在了整型溢出,當(dāng)數(shù)組中有整型最大值時(shí),此時(shí) lower 更新為 num+1 時(shí)就會(huì)溢出,所以在更新之前要先判斷一下,若 num 已經(jīng)是整型最大值了,直接返回結(jié)果 res 即可;否則才更新 lower 繼續(xù)循環(huán)。for 循環(huán)退出后,此時(shí)可能還存在缺失區(qū)間,就是此時(shí) lower 還小于等于 upper 時(shí),可以會(huì)缺失 lower 這個(gè)數(shù)字,或者 [lower, upper] 區(qū)間,最后補(bǔ)上這個(gè)區(qū)間就可以通過(guò)啦,參見(jiàn)代碼如下:
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++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間)的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)缺失區(qū)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C++實(shí)現(xiàn)LeetCode(171.求Excel表列序號(hào))
- C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱)
- C++實(shí)現(xiàn)LeetCode(167.兩數(shù)之和之二 - 輸入數(shù)組有序)
- C++實(shí)現(xiàn)LeetCode(166.分?jǐn)?shù)轉(zhuǎn)循環(huán)小數(shù))
- C++實(shí)現(xiàn)LeetCode165.版本比較)
- C++實(shí)現(xiàn)LeetCode(164.求最大間距)
- C++實(shí)現(xiàn)LeetCode(228.總結(jié)區(qū)間)
- C++實(shí)現(xiàn)LeetCode(169.求大多數(shù))
相關(guān)文章
深入講解C++數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)函數(shù)的知識(shí)
這篇文章主要介紹了深入講解C++數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)函數(shù)的知識(shí),包括類型轉(zhuǎn)換運(yùn)算符函數(shù)等內(nèi)容,需要的朋友可以參考下2015-09-09C字符串函數(shù)對(duì)應(yīng)的C++ string操作詳解
在本篇文章里小編給大家整理的是一篇關(guān)于C字符串函數(shù)對(duì)應(yīng)的C++ string操作知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2020-01-01C++實(shí)現(xiàn)打印虛函數(shù)表的地址
對(duì)于存在虛函數(shù)的類,如何打印虛函數(shù)表的地址,并利用這個(gè)虛函數(shù)表的地址來(lái)執(zhí)行該類中的虛函數(shù)呢,下面小編就來(lái)和大家一起簡(jiǎn)單聊聊吧2023-07-07OpenCV實(shí)現(xiàn)單目尺寸估計(jì)的案例詳解
這篇文章主要介紹了通過(guò)OpenCV如何實(shí)現(xiàn)單目尺寸估計(jì),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)和工作有一定的參考價(jià)值,感興趣的可以了解一下2022-01-01C++動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)查找最長(zhǎng)公共子序列
這篇文章主要介紹了C++動(dòng)態(tài)規(guī)劃最長(zhǎng)公共子序列,在動(dòng)態(tài)規(guī)劃中,你要將某個(gè)指標(biāo)最大化。在這個(gè)例子中,你要找出最長(zhǎng)公共子序列2022-06-06Qt連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)增刪改查操作
這篇文章主要為大家詳細(xì)介紹了Qt如何連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)增刪改查等基本操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09