給定乙個由整數陣列 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 中的每個元...