go語言題解LeetCode228匯總區(qū)間示例詳解
題目描述
原題鏈接 :
給定一個 無重復(fù)元素 的 有序 整數(shù)數(shù)組 nums
。
返回 恰好覆蓋數(shù)組中所有數(shù)字 的 最小有序 區(qū)間范圍列表 。也就是說,nums 的每個元素都恰好被某個區(qū)間范圍所覆蓋,并且不存在屬于某個范圍但不屬于 nums
的數(shù)字 x
。
列表中的每個區(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ù)組,從i,到j(luò)進行條件判斷插入字符串,插入完之后,將i移動到j(luò)后面那個位置,即i = j + 1。
本題難點在于邊界處理,因為涉及到j(luò)+1,遍歷時只能遍歷到n-1,最后一位需要依照相同的思路重新判斷一遍,如果數(shù)組為空或者只有一個元素,循環(huán)語句也不好判斷,因為無法與第二個元素相比較。有評論使用逃課方法,即在數(shù)組后額外安插一個整型最大值,但這樣的方法如果數(shù)組原本最后一個元素是最大值-1時,會導(dǎo)致結(jié)果錯誤不能使用。
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語言題解LeetCode228匯總區(qū)間示例詳解的詳細內(nèi)容,更多關(guān)于go語言匯總區(qū)間的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go語言之io.ReadAtLeast函數(shù)的基本使用和原理解析
io.ReadAtLeast函數(shù)是Go語言標準庫提供的一個工具函數(shù),能夠從數(shù)據(jù)源讀取至少指定數(shù)量的字節(jié)數(shù)據(jù)到緩沖區(qū)中,這篇文章主要介紹了io.ReadAtLeast函數(shù)的相關(guān)知識,需要的朋友可以參考下2023-07-07golang利用不到20行代碼實現(xiàn)路由調(diào)度詳解
這篇文章主要給大家介紹了關(guān)于golang利用不到20行代碼實現(xiàn)路由調(diào)度的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08golang interface判斷為空nil的實現(xiàn)代碼
這篇文章主要介紹了golang interface判斷為空nil的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04解決golang 反射interface{}做零值判斷的一個重大坑
這篇文章主要介紹了解決golang 反射interface{}做零值判斷的一個重大坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04go面向?qū)ο蠓绞讲僮鱆SON庫實現(xiàn)四則運算
這篇文章主要為大家介紹了go面向?qū)ο蠓绞讲僮鱆SON庫實現(xiàn)四則運算的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07