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

2021-08-14 14:32:06 字數 568 閱讀 1353

對正整數進行加法意義上的分割,求出其分割結果的最大乘積。

我們不妨先考慮,將整數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>=4,n>=5。這意味著我們在進行分割時,任何因數都應該小於4。最任何正整數n而言,n>1*(n-1),故因數只能是2或3。再特別考慮對整數6進行分割,2*2*2<3*3,所以在最大乘積中因數2不能超過3個。據此思路寫出求解**如下:

class solution 

product *= n;

return product;}};

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

對於給定的陣列,求出其整數範圍。如果從集合表示的角度來看待問題的話,可以理解成將列舉法轉化為描述法。所給陣列已經做好了公升序排列,那麼只用順序遍歷一次,把每乙個連續的整數串用字串返回即可。class solution else i end 1 return res 這種解法比較常規,時間複雜度為o ...

演算法設計周記(十) 棧

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

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

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