力扣343 整數拆分 題解

2021-10-07 11:49:49 字數 870 閱讀 3433

給定乙個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。 返回你可以獲得的最大乘積。

示例 1:

輸入: 2

輸出: 1

解釋: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

輸入: 10

輸出: 36

解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

說明: 你可以假設 n 不小於 2 且不大於 58。

呃這道題其實用數學思路解決比較快,而且**量少。

但其實我也對其中的數學推導不太清楚,只是記憶裡似乎有乙個類似的定理。

實際上題目是要讓我們令

我的思路主要是,最大的乘積藏在這個n分解成的相等的元素中。

比如,12的最大拆分乘積為3 * 3* 3*3.

如果不能拆成相等的元素,那就拆成最接近相等的元素。

比如13=3+3+3+4.或者4+4+5。這裡的答案是前者。

**裡的i是拆分成的元素的個數。

tmp1是這個元素的值,tmp2表示有tmp2個元素需要+1,從而保證數字拆分成最接近相等的元素。

class

solution

for(

int j=tmp2;j

) ans=

max(ans,zhi);}

return ans;}}

;

力扣 343 整數拆分

給定乙個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。返回你可以獲得的最大乘積。思路 遞迴方法 比如4,分割為1,2,3然後再考慮子問題即可,返回其中最大的即可。記憶搜尋演算法 class solution int process int n res計算的就是memo n me...

343 整數拆分

題目鏈結 首先根據題目很容易的到的乙個點是 要使乘積最大能選擇的 數字只能是1 2 3 之後選擇的任何乙個數都可以拆分成這三個的乘積所以只要選這三個就可以。證明方法就是 假設輸入的數為x在x 4 的時候 2 x 2 x恆成立因此在選擇 乘積大於4的時候總是能選擇乙個 x 和 x 2 拆分這個資料 如...

343 整數拆分

給定乙個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。返回你可以獲得的最大乘積。示例 1 輸入 2 輸出 1 解釋 2 1 1,1 1 1。示例 2 輸入 10 輸出 36 解釋 10 3 3 4,3 3 4 36。說明 你可以假設 n 不小於 2 且不大於 58。求最值問題最...