子串行2 連續子陣列的最大和

2021-10-11 04:25:54 字數 654 閱讀 3643

子陣列,這個題一開始肯定想到用滑動視窗,但它的陣列有負數,所以不知道往哪移動,只能用動態規劃。

用f(i)表示以i結尾的最大和陣列,則要找的就是max{f(i)},為什麼不用f(i)表示0到i的最大和,因為沒法用f(i-1)推出f(i),f(i-1)不一定包括num[i-1]。所以f(i)=max(num[i],num[i]+f(i-1));

因為它是連續的,所以乙個for就夠了,子串行一般是o(n2)

所以遍歷的時候如果cur小於0,就捨棄cur並令它等於當前的arr[i]。大於0的話就cur加上當前數。最後如果cur大於max,就令max=cur

class

solution

return res;

}}

如果加上乙個條件是我可以跳過一次的話。

則再加乙個陣列f[i]來表示以i結尾且到目前為止沒有用這次機會的最大和,

dp[i]表示以i結尾使用過這次機會最大值,兩者取乙個最大值即可。

f[i]=max(d[i-1]+num[i],num[i])

dp[i]=max(dp[i-1]+nums[i],d[i-1]);

class

solution

return res;

}}

7 連續子陣列的最大和(子陣列 最大和)

題目 給乙個陣列,讓求連續陣列元素的最大和。public int maxsumofsubarray int arr 思路 連續子陣列的最大和動態規劃 dp i dp i 表示以arr i 結尾的連續子陣列的最大和。arr i 必須加上,就不判斷arr i 是正還是負。dp i 等於arr i 加上以...

27 連續子陣列的最大和

連續子陣列的最大和 hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8...

30 連續子陣列的最大和

題目描述 hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個...