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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

文巾解题 525. 连续数组

發布時間:2025/4/5 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文巾解题 525. 连续数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 題目描述

2 解題思路

方便起見,我們將0~1數組看成-1~1數組。

什么時候子數組中-1和1的數量相同呢?那就是這個子數組里面的數字之和為0,此時所有的-1和1兩兩抵消了。

那么我們就想到前綴和sum,我們計算sum到每個坐標時候的前綴和結果。如果兩個坐標的前綴和結果一樣,那么這兩個坐標中間的部分就是一個滿足要求的子數組(比如sum[i]==sum[j],那么i+

1到j的這個子數組就是我們要的和為0的子數組)。

但即使出前綴和之后,如果再遍歷i和j,又需要O(n^2)的時間。于是我建了兩個哈希表,一個存放該前綴和第一次出現時候的下標;另一個存放該前綴和最后一次出現時的下標。

class Solution:def findMaxLength(self, nums: List[int]) -> int:dit_first={0:-1}dit_last={0:-1}#一個元素都沒有加,記sum到-1位的時候的前綴和tmp=0#遍歷到當前位的前綴和for i in range(len(nums)):if(nums[i]==0):tmp+=-1#將0看成-1else:tmp+=1if(tmp in dit_first):dit_last[tmp]=ielse:dit_first[tmp]=idit_last[tmp]=iret=0for i in dit_first.keys():if(dit_last[i]-dit_first[i]>ret):#第一次和最后一次前綴和出現的坐標之間的距離ret=dit_last[i]-dit_first[i]return(ret)

?

總結

以上是生活随笔為你收集整理的文巾解题 525. 连续数组的全部內容,希望文章能夠幫你解決所遇到的問題。

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