題目
給定一個二進位制陣列, 找到含有相同數量的 0 和 1 的最長連續子陣列(的長度)。
示例 1:輸入: [0,1] 輸出: 2
說明: [0, 1] 是具有相同數量0和1的最長連續子陣列。
示例 2:輸入: [0,1,0] 輸出: 2
說明: [0, 1] (或 [1, 0]) 是具有相同數量0和1的最長連續子陣列。
注意: 給定的二進位制陣列的長度不會超過50000。
解題思路分析1、字首和;時間複雜度O(n),空間複雜度O(n)
func findMaxLength(nums []int) int { res := 0 m := make(map[int]int) m[0] = -1 total := 0 for i := 0; i < len(nums); i++ { if nums[i] == 0 { total-- } else { total++ } if first, ok := m[total]; !ok { m[total] = i } else { if i-first > res { res = i - first } } } return res}
總結Medium題目,字首和問題
最新評論