1191. K 次串联后最大子数组之和(最大子段和变形)
生活随笔
收集整理的這篇文章主要介紹了
1191. K 次串联后最大子数组之和(最大子段和变形)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你一個整數數組 arr 和一個整數 k。
首先,我們要對該數組進行修改,即把原數組 arr 重復 k 次。
舉個例子,如果 arr = [1, 2] 且 k = 3,那么修改后的數組就是 [1, 2, 1, 2, 1, 2]。
然后,請你返回修改后的數組中的最大的子數組之和。
注意,子數組長度可以是 0,在這種情況下它的總和也是 0。
由于 結果可能會很大,所以需要 模(mod) 10^9 + 7 后再返回。
示例 1:
輸入:arr = [1,2], k = 3
輸出:9
示例 2:
輸入:arr = [1,-2,1], k = 5
輸出:2
示例 3:
輸入:arr = [-1,-2], k = 7
輸出:0
提示:
1 <= arr.length <= 10^5
1 <= k <= 10^5
-10^4 <= arr[i] <= 10^4
這個題目,還是要求最大子段和。
①整個數組的和大于0,那么最大值就是sum*(k-1)+max1(原始數組中的最大子段和).
②在整體和不大于0大的情況下,最大值就在max1,max2(連續兩段數組的最大子段和)中取到了。
第二種情況一開始想了好多種情況,分類討論了很多。但是最后才發現,其實就是在max1和max2中取到。
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的1191. K 次串联后最大子数组之和(最大子段和变形)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 665. 非递减数列
- 下一篇: 1095. 山脉数组中查找目标值(三分+