非法网站怎么推广,高毅资产网站谁做的,郴州新闻最新消息,山东专业网站建设给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组#xff0c;并返回该子数组的长度。
示例 1:
输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2:
输入: nums [0,1,0] 输出: 2 说明: [0, 1] (或 [1, 0]) 是…给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组并返回该子数组的长度。
示例 1:
输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2:
输入: nums [0,1,0] 输出: 2 说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。
解题思路
维护一个变量bi存储子数组[0,i]里面1和0的差值1的数量-0的数量
假设子数组为[i,j],若想具有相同数量 0 和 1
子数组中1的数量子数组[0,j]中1的数量-子数组[0,i]中1的数量
子数组中0的数量子数组[0,j]中0的数量-子数组[0,i]中0的数量
子数组中1的数量子数组中0的数量
子数组[0,j]中1的数量-子数组[0,i]中1的数量子数组[0,j]中0的数量-子数组[0,i]中0的数量
子数组[0,j]里面1和0的差值子数组[0,i]里面1和0的差值
所以我们只需要找到相同的1和0的差值就能判断它们具有相同数量的 0 和 1
代码
func findMaxLength(nums []int) (maxLength int) {max : func(a int, b int) int {if a b {return a} else {return b}}m : map[int]int{}b:0for i, num : range nums {if num0{b--}else{b}if b0{maxLengthmax(maxLength,i1)m[b]icontinue}index,has : m[b]if has{maxLengthmax(maxLength,i-index)}else {m[b]i}}return
}