日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 525. 连续数组

發布時間:2023/11/29 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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. 连续数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。