LeetCode 410 分割陣列的最大值

2022-09-14 19:48:11 字數 795 閱讀 2257

給定乙個非負整數陣列 nums 和乙個整數 m ,你需要將這個陣列分成 m 個非空的連續子陣列。

設計乙個演算法使得這 m 個子陣列各自和的最大值最小。

輸入:nums = [7,2,5,10,8], m = 2

輸出:18

解釋:一共有四種方法將 nums 分割為 2 個子陣列。 其中最好的方式是將其分為 [7,2,5] 和 [10,8] 。

因為此時這兩個子陣列各自的和的最大值為18,在所有情況中最小。

class solution 

};

最大最小值問題,可以使用動態規劃進行搜尋。類似題目【leetcode-375】猜數字大小 ii。本題中,動態規劃設為dp[i][j],表示以i結尾,分為j個子陣列時的結果。

class solution 

while (left < right)

return left;

}private:

bool check(vector& nums, int m, int mid)

}return cnt > m; // 當前最大值下,需要劃分的堆數大於題目要求

}};

二分查詢問題都有乙個特點,那就是題目要求乙個最大最小值問題,也就是在保證能完成某一任務的前提下的最小值。對於這種問題,我們通常會猜測乙個值,然後使用這個值去模擬整個操作過程,看最後的結果是否滿足要求,再根據這個返回的布林值決定左右邊界的移動。

貪心 LeetCode410 分割陣列的最大值

給定乙個非負整數陣列和乙個整數 m,你需要將這個陣列分成 m 個非空的連續子陣列。設計乙個演算法使得這m 個子陣列各自和的最大值最小。注意 陣列長度 n 滿足以下條件 1 n 1000 1 m min 50,n 輸入 nums 7,2,5,10,8 m 2 輸出 18 解釋 一共有四種方法將nums...

LeetCode410 分割陣列的最大值

leetcode410.分割陣列的最大值 給定乙個非負整數陣列和乙個整數 m,你需要將這個陣列分成 m 個非空的連續子陣列。設計乙個演算法使得這 m 個子陣列各自和的最大值最小。注意 陣列長度 n 滿足以下條件 1 n 1000 1 m min 50,n 示例 輸入 nums 7,2,5,10,8 ...

LeetCode 410 分割陣列的最大值

給定乙個非負整數陣列和乙個整數 m,你需要將這個陣列分成 m 個非空的連續子陣列。設計乙個演算法使得這 m 個子陣列各自和的最大值最小。注意 陣列長度 n 滿足以下條件 1 n 1000 1 m min 50,n 示例 輸入 nums 7,2,5,10,8 m 2 輸出 18 解釋 一共有四種方法將...