go語(yǔ)言題解LeetCode228匯總區(qū)間示例詳解
題目描述
原題鏈接 :
給定一個(gè) 無(wú)重復(fù)元素 的 有序 整數(shù)數(shù)組 nums 。
返回 恰好覆蓋數(shù)組中所有數(shù)字 的 最小有序 區(qū)間范圍列表 。也就是說(shuō),nums 的每個(gè)元素都恰好被某個(gè)區(qū)間范圍所覆蓋,并且不存在屬于某個(gè)范圍但不屬于 nums 的數(shù)字 x 。
列表中的每個(gè)區(qū)間范圍 [a,b] 應(yīng)該按如下格式輸出:
- "a->b" ,如果 a != b
- "a" ,如果 a == b
示例 1:
輸入:nums = [0,1,2,4,5,7] 輸出:["0->2","4->5","7"] 解釋:區(qū)間范圍是: [0,2] --> "0->2" [4,5] --> "4->5" [7,7] --> "7"
示例 2:
輸入:nums = [0,2,3,4,6,8,9] 輸出:["0","2->4","6","8->9"] 解釋:區(qū)間范圍是: [0,0] --> "0" [2,4] --> "2->4" [6,6] --> "6" [8,9] --> "8->9"
提示:
0 <= nums.length <= 20
-2^31 <= nums[i] <= 2^31 - 1
- nums 中的所有值都 互不相同
- nums 按升序排列
思路分析
本題思路比較明晰,設(shè)立雙指針,一前一后遍歷數(shù)組,當(dāng)遇到結(jié)果不是有序遞增,即nums[j]+1 != nums[j+1]時(shí),中斷數(shù)組,從i,到j(luò)進(jìn)行條件判斷插入字符串,插入完之后,將i移動(dòng)到j(luò)后面那個(gè)位置,即i = j + 1。
本題難點(diǎn)在于邊界處理,因?yàn)樯婕暗絡(luò)+1,遍歷時(shí)只能遍歷到n-1,最后一位需要依照相同的思路重新判斷一遍,如果數(shù)組為空或者只有一個(gè)元素,循環(huán)語(yǔ)句也不好判斷,因?yàn)闊o(wú)法與第二個(gè)元素相比較。有評(píng)論使用逃課方法,即在數(shù)組后額外安插一個(gè)整型最大值,但這樣的方法如果數(shù)組原本最后一個(gè)元素是最大值-1時(shí),會(huì)導(dǎo)致結(jié)果錯(cuò)誤不能使用。
AC 代碼
vector<string> summaryRanges(vector<int> &nums) {
vector<string> s;
if (nums.size() == 0)
return s;
if (nums.size() == 1) {
s.push_back(to_string(nums[0]));
return s;
}
int i = 0, j = 0, n = nums.size();
string t;
for (; j < n - 1; j++) {
if (nums[j] + 1 != nums[j + 1]) {
if (i == j)
s.push_back(to_string(nums[i]));
else
s.push_back(to_string(nums[i]) + "->" + to_string(nums[j]));
i = j + 1;
}
}
if (i == j)
s.push_back(to_string(nums[i]));
else
s.push_back(to_string(nums[i]) + "->" + to_string(nums[j]));
return s;
}以上就是go語(yǔ)言題解LeetCode228匯總區(qū)間示例詳解的詳細(xì)內(nèi)容,更多關(guān)于go語(yǔ)言匯總區(qū)間的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Go語(yǔ)言題解LeetCode1266訪問(wèn)所有點(diǎn)的最小時(shí)間示例
- go語(yǔ)言題解LeetCode1275找出井字棋的獲勝者示例
- go語(yǔ)言題解LeetCode1299將每個(gè)元素替換為右側(cè)最大元素
- go語(yǔ)言題解LeetCode88合并兩個(gè)有序數(shù)組示例
- Go語(yǔ)言題解LeetCode35搜索插入位置示例詳解
- go語(yǔ)言題解LeetCode66加一示例詳解
- go語(yǔ)言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等
- Go語(yǔ)言題解LeetCode1260二維網(wǎng)格遷移示例詳解
相關(guān)文章
Golang語(yǔ)言的跨平臺(tái)UI工具包fyne使用詳解
這篇文章主要為大家介紹了Golang語(yǔ)言的跨平臺(tái)UI工具包fyne使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
簡(jiǎn)介Go語(yǔ)言中的select語(yǔ)句的用法
這篇文章主要介紹了簡(jiǎn)介Go語(yǔ)言中的select語(yǔ)句的用法,是golang入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10
Golang實(shí)現(xiàn)定時(shí)任務(wù)的幾種方法小結(jié)
在 Golang 開發(fā)中,定時(shí)任務(wù)是常見的需求,本文將介紹幾種在 Golang 中實(shí)現(xiàn)定時(shí)任務(wù)的方法,包括 time 包的定時(shí)器、ticker,以及第三方庫(kù) cron,并通過(guò)示例代碼展示它們的使用方式,需要的朋友可以參考下2024-01-01
Go語(yǔ)言中處理JSON數(shù)據(jù)的編碼和解碼的方法
在Go語(yǔ)言中,處理JSON數(shù)據(jù)的編碼和解碼主要依賴于標(biāo)準(zhǔn)庫(kù)中的encoding/json包,這個(gè)包提供了兩個(gè)核心的函數(shù):Marshal和Unmarshal,本文給大家介紹了Go語(yǔ)言中處理JSON數(shù)據(jù)的編碼和解碼的方法,需要的朋友可以參考下2024-04-04
如何理解Go函數(shù)是一等公民原理及使用場(chǎng)景
這篇文章主要為大家介紹了如何理解Go函數(shù)是一等公民及使用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

