如果陣列 b 是陣列 a 的一個連續子序列,即如果它等於 a[l],a[l+1],...,a[r] ,那麼它就是 a 的一個子陣列。
示例 1:輸入:nums = [4,2,4,5,6] 輸出:17
解釋:最優子陣列是 [2,4,5,6]
示例 2:輸入:nums = [5,2,1,2,5,2,1,2,5] 輸出:8
解釋:最優子陣列是 [5,2,1] 或 [1,2,5]
提示:1 <= nums.length <= 105
1 <= nums[i] <= 104
解題思路分析1、滑動視窗;時間複雜度O(n),空間複雜度O(n)
func maximumUniqueSubarray(nums []int) int { res := 0 sum := 0 m := make(map[int]int) left := 0 for i := 0; i < len(nums); i++ { m[nums[i]]++ sum = sum + nums[i] for m[nums[i]] > 1 { m[nums[left]]-- sum = sum - nums[left] left++ } if sum > res { res = sum } } return res}
總結Medium題目,本質上就算求不重複陣列的最大和
最新評論