leetcode 525. 连续数组
生活随笔
收集整理的這篇文章主要介紹了
leetcode 525. 连续数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個二進制數組 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 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 }總結
以上是生活随笔為你收集整理的leetcode 525. 连续数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 题目总结
- 下一篇: leetcode 494. 目标和