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)文章
Go語(yǔ)言之io.ReadAtLeast函數(shù)的基本使用和原理解析
io.ReadAtLeast函數(shù)是Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供的一個(gè)工具函數(shù),能夠從數(shù)據(jù)源讀取至少指定數(shù)量的字節(jié)數(shù)據(jù)到緩沖區(qū)中,這篇文章主要介紹了io.ReadAtLeast函數(shù)的相關(guān)知識(shí),需要的朋友可以參考下2023-07-07golang利用不到20行代碼實(shí)現(xiàn)路由調(diào)度詳解
這篇文章主要給大家介紹了關(guān)于golang利用不到20行代碼實(shí)現(xiàn)路由調(diào)度的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08go web 預(yù)防跨站腳本的實(shí)現(xiàn)方式
這篇文章主要介紹了go web 預(yù)防跨站腳本的實(shí)現(xiàn)方式,文中給大家介紹XSS最佳的防護(hù)應(yīng)該注意哪些問(wèn)題,本文通過(guò)實(shí)例代碼講解的非常詳細(xì),需要的朋友可以參考下2021-06-06golang 接口嵌套實(shí)現(xiàn)復(fù)用的操作
這篇文章主要介紹了golang 接口嵌套實(shí)現(xiàn)復(fù)用的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04golang interface判斷為空nil的實(shí)現(xiàn)代碼
這篇文章主要介紹了golang interface判斷為空nil的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04解決golang 反射interface{}做零值判斷的一個(gè)重大坑
這篇文章主要介紹了解決golang 反射interface{}做零值判斷的一個(gè)重大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04詳解在Go語(yǔ)言單元測(cè)試中如何解決Redis存儲(chǔ)依賴問(wèn)題
在編寫單元測(cè)試時(shí),除了?MySQL?這個(gè)外部存儲(chǔ)依賴,Redis?應(yīng)該是另一個(gè)最為常見的外部存儲(chǔ)依賴了,本文就來(lái)講解下如何解決?Redis?外部依賴,文章通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08go面向?qū)ο蠓绞讲僮鱆SON庫(kù)實(shí)現(xiàn)四則運(yùn)算
這篇文章主要為大家介紹了go面向?qū)ο蠓绞讲僮鱆SON庫(kù)實(shí)現(xiàn)四則運(yùn)算的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07