leetcode 918 環形子陣列的最大和

2021-10-12 07:18:56 字數 938 閱讀 3264

給定乙個由整數陣列 a 表示的環形陣列 c,求 c 的非空子陣列的最大可能和。子陣列要連續!important;

因為是環形,所以我們可以分為兩種情況討論

對於第一種情況,先求出陣列的和,然後再再求出和最小的子陣列,用和減去它即可

對於第二種情況,我們直接求出和最大的子陣列

然後二者取最大值即可。

和最小的子陣列 && 和最大的子陣列

d p[

i]=m

ax(d

p[i−

1]+a

[i],

a[i]

)dp[i] = max(dp[i-1]+a[i], a[i])

dp[i]=

max(

dp[i

−1]+

a[i]

,a[i

])最小子陣列就把原陣列取反再求最大子陣列即可~

/**

* @param a

* @return

*/var

maxsubarraysumcircular

=function(a

)for

(let i =

0; i <

a.length; i++)a

[i]=-a

[i];

dp.fill(0

);let pl =

-infinity

;for

(let i =

0; i <

a.length; i++

) ans = math.

max(ans, sum + pl);if

(ans ===

0) ans = ex;

return ans;

};

LeetCode 918 環形子陣列的最大和

給定乙個由整數陣列 a 表示的環形陣列 c,求 c 的非空子陣列的最大可能和。在此處,環形陣列意味著陣列的末端將會與開頭相連呈環狀。形式上,當0 i a.length 時 c i a i 且當 i 0 時 c i a.length c i 此外,子陣列最多只能包含固定緩衝區 a 中的每個元素一次。形...

leetcode 918 環形子陣列的最大和

918.環形子陣列的最大和 求兩個值,乙個是子陣列最小值,乙個是子陣列最大值 環形陣列如果沒有跨最後乙個那就是子陣列最大值 如果跨了最後乙個那就是 總數 子陣列最小值 為什麼是 total min 如果成環狀,那麼陣列將被分成兩段 頭和尾 總數是不變的,如果其他部分加起來最大,那麼中間的子陣列必然加...

918 環形子陣列的最大和

題目描述 給定乙個由整數陣列 a 表示的環形陣列 c,求 c 的非空子陣列的最大可能和。在此處,環形陣列意味著陣列的末端將會與開頭相連呈環狀。形式上,當0 i a.length 時 c i a i 且當 i 0 時 c i a.length c i 此外,子陣列最多只能包含固定緩衝區 a 中的每個元...