给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。
示例 1:输入: nums = [0,1] 输出: 2
说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。
示例 2:输入: nums = [0,1,0] 输出: 2
说明: [0, 1] (或 [1, 0]) 是具有相同数量 0 和 1 的最长连续子数组。
提示:1 <= nums.length <= 105
nums[i] 不是 0 就是 1
注意:本题与主站 525 题相同
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题目,题目同 leetcode 525.连续数组
页面更新:2024-04-02
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号