演算法設計周記(六) Summary Ranges

2021-08-09 08:17:12 字數 706 閱讀 9390

對於給定的陣列,求出其整數範圍。如果從集合表示的角度來看待問題的話,可以理解成將列舉法轉化為描述法。

所給陣列已經做好了公升序排列,那麼只用順序遍歷一次,把每乙個連續的整數串用字串返回即可。

class solution  else 

i = end+1;

}return res;}};

這種解法比較常規,時間複雜度為o(n),也沒有什麼額外的空間開銷。

乙個連續的整數串,對應的就是乙個字串,我們可以給同一範圍內的所有數標上一致的tag,最後返回出start和end即可。

substarct表示的是對應元素所在字串的序號,而數理上它是numbers和indexes的差值。**實現並不複雜,這裡也就不做贅述。這種解法雖然並沒有帶來實質上的複雜度優化,但是對開放性的思維鍛鍊比較有益,具有一定的嘗試價值。

演算法設計周記(十) 棧

給定乙個擁有固定格式的字串n s 將其解析成ss s 重複n次 的形式。這題涉及到符號匹配,可以考慮使用棧這一filo的資料結構來幫助解決問題。因為數字必定表示倍數,不會是轉換後的字串的內容,所以遍歷字串遇到數字時,將其轉換成整數形式存在int棧內 若是讀到字母,將其存入快取字串 符號意味著重複字串...

演算法設計周記(十七) Integer Break

對正整數進行加法意義上的分割,求出其分割結果的最大乘積。我們不妨先考慮,將整數n分割成兩個數的情形。顯然若n為偶數,最大乘積為 n 2 n 2 若n為奇數,最大乘積為 n 1 2 n 1 2。當 n 2 n 2 和 n 1 2 n 1 2大於等於n時,我們才應該對n進行分割,分別列出不等式,解得n ...

演算法設計周記(三) 桶排序

問題需要給一組雜亂無章的0,1,2排序,要求不使用庫函式,並且只使用常量空間。在此基礎上我立即想到的方案是採用桶排序,具體實現如下 public void sortcolors vector nums vector iterator it for it nums.begin it nums.end ...