C++實(shí)現(xiàn)LeetCode(228.總結(jié)區(qū)間)
[LeetCode] 228.Summary Ranges 總結(jié)區(qū)間
Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
Input: [0,1,2,4,5,7]
Output: ["0->2","4->5","7"]
Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
Example 2:
Input: [0,2,3,4,6,8,9]
Output: ["0","2->4","6","8->9"]
Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
這道題給定我們一個(gè)有序數(shù)組,讓我們總結(jié)區(qū)間,具體來(lái)說(shuō)就是讓我們找出連續(xù)的序列,然后首尾兩個(gè)數(shù)字之間用個(gè)“->"來(lái)連接,那么我只需遍歷一遍數(shù)組即可,每次檢查下一個(gè)數(shù)是不是遞增的,如果是,則繼續(xù)往下遍歷,如果不是了,我們還要判斷此時(shí)是一個(gè)數(shù)還是一個(gè)序列,一個(gè)數(shù)直接存入結(jié)果,序列的話(huà)要存入首尾數(shù)字和箭頭“->"。我們需要兩個(gè)變量i和j,其中i是連續(xù)序列起始數(shù)字的位置,j是連續(xù)數(shù)列的長(zhǎng)度,當(dāng)j為1時(shí),說(shuō)明只有一個(gè)數(shù)字,若大于1,則是一個(gè)連續(xù)序列,代碼如下:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int i = 0, n = nums.size();
while (i < n) {
int j = 1;
while (i + j < n && (long)nums[i + j] - nums[i] == j) ++j;
res.push_back(j <= 1 ? to_string(nums[i]) : to_string(nums[i]) + "->" + to_string(nums[i + j - 1]));
i += j;
}
return res;
}
};
類(lèi)似題目:
Data Stream as Disjoint Intervals
參考資料:
https://leetcode.com/problems/summary-ranges/
https://leetcode.com/problems/summary-ranges/discuss/63451/9-lines-c%2B%2B-0ms-solution
https://leetcode.com/problems/summary-ranges/discuss/63219/Accepted-JAVA-solution-easy-to-understand
到此這篇關(guān)于C++實(shí)現(xiàn)LeetCode(228.總結(jié)區(qū)間)的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)總結(jié)區(qū)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C++實(shí)現(xiàn)LeetCode(169.求大多數(shù))
- C++實(shí)現(xiàn)LeetCode(171.求Excel表列序號(hào))
- C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱(chēng))
- 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(170.兩數(shù)之和之三 - 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì))
相關(guān)文章
詳解C語(yǔ)言中typedef和#define的用法與區(qū)別
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中typedef和#define的的用法、區(qū)別,以及陷阱。文中通過(guò)示例進(jìn)行了詳細(xì)講解,感興趣的小伙伴可以了解一下2022-07-07
C/C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的示例代碼
C 標(biāo)準(zhǔn)庫(kù)提供了 time() 函數(shù)與 localtime() 函數(shù)可以獲取到當(dāng)前系統(tǒng)的日歷時(shí)間。本文將通過(guò)一些簡(jiǎn)單的示例為大家講講C++獲取系統(tǒng)時(shí)間的具體方法,需要的可以參考一下2022-12-12
詳解C語(yǔ)言的隨機(jī)數(shù)生成及其相關(guān)題目
這篇文章主要介紹了詳解C語(yǔ)言的隨機(jī)數(shù)生成及其相關(guān)題目,作者還列舉了阿里巴巴的一道相關(guān)的面試題,需要的朋友可以參考下2015-08-08
c語(yǔ)言函數(shù)如何求兩個(gè)數(shù)的最大值
這篇文章主要介紹了c語(yǔ)言函數(shù)如何求兩個(gè)數(shù)的最大值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
C語(yǔ)言進(jìn)程程序替換的實(shí)現(xiàn)詳解
為什么要進(jìn)程替換?因?yàn)楦高M(jìn)程創(chuàng)建出來(lái)的子進(jìn)程和父進(jìn)程擁有相同的代碼段,所以,子進(jìn)程看到的代碼和父進(jìn)程是一樣的。當(dāng)我們想要讓子進(jìn)程執(zhí)行不同的程序時(shí)候,就需要讓子進(jìn)程調(diào)用進(jìn)程程序替換的接口,從而讓子進(jìn)程執(zhí)行不一樣的代碼2022-08-08

