918 環形子陣列的最大和

2021-10-18 13:26:22 字數 1140 閱讀 3589

題目描述:

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

在此處,環形陣列意味著陣列的末端將會與開頭相連呈環狀。(形式上,當0 <= i < a.length 時 c[i] = a[i],且當 i >= 0 時 c[i+a.length] = c[i])

此外,子陣列最多只能包含固定緩衝區 a 中的每個元素一次。(形式上,對於子陣列 c[i], c[i+1], …, c[j],不存在 i <= k1, k2 <= j 其中 k1 % a.length = k2 % a.length

示例 1:

輸入:[1,-2,3,-2]

輸出:3

解釋:從子陣列 [3] 得到最大和 3

示例 2:

輸入:[5,-3,5]

輸出:10

解釋:從子陣列 [5,5] 得到最大和 5 + 5 = 10

示例 3:

輸入:[3,-1,2,-1]

輸出:4

解釋:從子陣列 [2,-1,3] 得到最大和 2 + (-1) + 3 = 4

示例 4:

輸入:[3,-2,2,-3]

輸出:3

解釋:從子陣列 [3] 和 [3,-2,2] 都可以得到最大和 3

示例 5:

輸入:[-2,-3,-1]

輸出:-1

解釋:從子陣列 [-1] 得到最大和 -1

-30000 <= a[i] <= 30000

1 <= a.length <= 30000

方法1:

(1)確定出元素組中連續子陣列的最大和與最小和;

(2)則最終的環形最大和一定是最大和或者總和減去最小和的結果中的乙個;

class

solution

if(cur_v_max<0)

}if(v_max<=0)

//返回最大值

return

max(v_max,sum_all-v_min);}

};

leetcode 918 環形子陣列的最大和

給定乙個由整數陣列 a 表示的環形陣列 c,求 c 的非空子陣列的最大可能和。子陣列要連續 important 因為是環形,所以我們可以分為兩種情況討論 對於第一種情況,先求出陣列的和,然後再再求出和最小的子陣列,用和減去它即可 對於第二種情況,我們直接求出和最大的子陣列 然後二者取最大值即可。和最...

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 如果成環狀,那麼陣列將被分成兩段 頭和尾 總數是不變的,如果其他部分加起來最大,那麼中間的子陣列必然加...