leetcode 1043 分隔陣列以得到最大和

2022-07-24 06:12:13 字數 610 閱讀 9724

題意:

給出整數陣列a,將該陣列分隔為長度最多為k的幾個(連續)子陣列。分隔完成後,每個子陣列的中的值都會變為該子陣列中的最大值。

返回給定陣列完成分隔後的最大和。

示例

輸入:a = [1,15,7,9,2,5,10], k = 3

輸出:84

解釋:a 變為 [15,15,15,9,10,10,10]

思路:簡單dp。dp[i]表示分割完前i個數,最大值是多少。

j表示當前段的長度[1,k]。

假設我們知道[i-j,i]這一段的最大值curmax,那麼dp[i]可以從dp[i-j]推過來。

dp[i] = max(dp[i],dp[i-j]+curmax*j);

curmax又可以通過遍歷j的時候來更新。

1

class

solution 12}

13return

dp[l];14}

15 };

view code

leetcode 1043 分隔陣列以得到最大和

給出整數陣列 a,將該陣列分隔為長度最多為 k 的幾個 連續 子陣列。分隔完成後,每個子陣列中的值都會變為該子陣列中的最大值。返回給定陣列完成分隔後的最大和。示例 輸入 a 1,15,7,9,2,5,10 k 3 輸出 84 解釋 a 變為 15,15,15,9,10,10,10 這個問題最直觀的想...

LeetCode1556 千位分隔數

一.題目 題目給你乙個整數 n,請你每隔三位新增點 即 符號 作為千位分隔符,並將結果以字串格式返回。示例 二.方法一 反轉字串 解題思路 先將字串反轉,然後每隔3個數字新增乙個 再將最終的字串反轉回來,並刪掉最後多餘的 即可 之所以最開始要反轉字串,是因為反轉後就不用考慮最前面是否滿足3位的情況 ...

Leetcode86 分隔鍊錶

題目描述 給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5演算法描述 此題有兩種解法,第一種就是將所有小於給定值的節點取...