leetcode 525. 连续数组
給定一個(gè)二進(jìn)制數(shù)組 nums , 找到含有相同數(shù)量的 0 和 1 的最長(zhǎng)連續(xù)子數(shù)組,并返回該子數(shù)組的長(zhǎng)度。
示例 1:
輸入: nums = [0,1]
輸出: 2
說(shuō)明: [0, 1] 是具有相同數(shù)量 0 和 1 的最長(zhǎng)連續(xù)子數(shù)組。
示例 2:
輸入: nums = [0,1,0]
輸出: 2
說(shuō)明: [0, 1] (或 [1, 0]) 是具有相同數(shù)量0和1的最長(zhǎng)連續(xù)子數(shù)組。
解題思路
維護(hù)一個(gè)變量bi,存儲(chǔ)子數(shù)組[0,i]里面1和0的差值(1的數(shù)量-0的數(shù)量)
假設(shè)子數(shù)組為[i,j],若想具有相同數(shù)量 0 和 1
子數(shù)組中1的數(shù)量=子數(shù)組[0,j]中1的數(shù)量-子數(shù)組[0,i]中1的數(shù)量
子數(shù)組中0的數(shù)量=子數(shù)組[0,j]中0的數(shù)量-子數(shù)組[0,i]中0的數(shù)量
子數(shù)組中1的數(shù)量=子數(shù)組中0的數(shù)量
子數(shù)組[0,j]中1的數(shù)量-子數(shù)組[0,i]中1的數(shù)量=子數(shù)組[0,j]中0的數(shù)量-子數(shù)組[0,i]中0的數(shù)量
子數(shù)組[0,j]里面1和0的差值=子數(shù)組[0,i]里面1和0的差值
所以我們只需要找到相同的1和0的差值,就能判斷它們具有相同數(shù)量的 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 num==0{b--}else{b++}if b==0{maxLength=max(maxLength,i+1)m[b]=icontinue}index,has := m[b]if has{maxLength=max(maxLength,i-index)}else {m[b]=i}}return }總結(jié)
以上是生活随笔為你收集整理的leetcode 525. 连续数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux 题目总结
- 下一篇: leetcode 494. 目标和