日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

My Sixty-fifth Page - 整数拆分 - By Nicolas

發布時間:2023/12/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 My Sixty-fifth Page - 整数拆分 - By Nicolas 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇page是針對leetcode上的343.整數拆分所寫的。小尼先簡單的說明一下這題的題意,給定一個正整數n,將其拆分為k個正整數,要求最后使得這個整數的乘積最大化。

小尼先簡單的跟大家分析一下這道題的意思,其實就是我們需要做出最優解的操作,我們可以想一下,我們拿到的整數是n,我們需要將其進行對應的拆分,我們可以將它拆成兩個或者是多個,當我們拆分成兩個數進行相乘時是比較好判斷的,就是直接做一個for的循環進行對應的遍歷即可,而且求出來的結果也就j*(i-j),也就是我們將它分成的兩個數可以從一開始進行對應的拆分,我們一個一個的與我們給出的n的減去我們遍歷進行的數進行乘法運算

上面小尼跟大家講解了兩個數字的運算,當我們進行多個數字的運算的時候,我們這個時候就一定需要擁有最優的思想,我們設置了一個內置的for循環,進行我們的從一到n的之間所有的數字的一個最優的dp的解,我們通過dp的最優的解法在去做我們下一層的判斷,在座的各位可能聽到小尼現在所說的就有些許的迷惑了,小尼先拉一下對應的動態規劃的代碼:

class Solution {public int integerBreak(int n) {int[] dp = new int[n + 1];for(int i = 2; i <= n; i++){int curMax = 0;for(int j = 1; j < i ; j++){curMax = Math.max(curMax , Math.max(j * (i - j), j * dp[i - j]));}dp[i] = curMax;}return dp[n];} }

小尼在最開始看這段代碼的時候也是看的非常的迷惑的,其實小尼覺得貪心里面的奧秘就是我們的數組可以不斷地記錄我們前面情況的最優解,可以使得我們后面的條件可以直接的調用,這里設置了dp數組,我們一直往里面記錄了1到n所有的數的dp的值,這個其實就是我們對最優解的記錄,小尼也是現在這里跟大家解釋一下其中的一點,就是我們雖然寫了兩層for循環,其中外面那一層是用來記錄dp[i]的,而里面的那一層是遍歷從1到j的所有dp數據的最優解,等到遍歷完了最優解了之后我們再將數據放入dp數組中,以便我們下一次判斷最優解中j * dp[i - j]的利用。

總結

以上是生活随笔為你收集整理的My Sixty-fifth Page - 整数拆分 - By Nicolas的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。