leetcode 525 連續陣列

2021-10-08 11:11:35 字數 706 閱讀 4587

給定乙個二進位制陣列, 找到含有相同數量的 0 和 1 的最長連續子陣列(的長度)。

示例 1:

輸入:[0,1]輸出:2說明:[0, 1] 是具有相同數量0和1的最長連續子陣列。
示例 2:

輸入:[0,1,0]輸出:2說明:[0, 1] (或 [1, 0]) 是具有相同數量0和1的最長連續子陣列。

注意:給定的二進位制陣列的長度不會超過50000。

當長度大於10000的時候就不適合用複雜度為o(n^2)

c++

class solution 

sum = 0

ans = 0

for i,num in enumerate(nums):

if num==0: num=-1

sum += num

if sum==0: ans = i+1

elif(sum in dic):

ans = max(ans,i-dic[sum])

else:

dic[sum] = i

return ans

LeetCode525 連續陣列

題目說陣列長度最長可能到50000,所以如果暴力枚舉子陣列的起點 終點,再計算陣列和,複雜度就是o n 3 肯定超時。可以預處理出字首和,這樣只需要列舉起點和終點即可,但時間複雜度依然是o n 2 也不行。這裡需要一點奇技淫巧,因為陣列只包含有0和1,如果一段子陣列含有相同數量的0和1,則這個子陣列...

Leetcode 525 連續陣列 C

給定乙個二進位制陣列,找到含有相同數量的 0 和 1 的最長連續子陣列 的長度 示例 1 輸入 0,1 輸出 2 說明 0,1 是具有相同數量0和1的最長連續子陣列。示例 2 輸入 0,1,0 輸出 2 說明 0,1 或 1,0 是具有相同數量0和1的最長連續子陣列。注意 給定的二進位制陣列的長度不...

52 連續陣列

題目描述 給定乙個二進位制陣列,找到含有相同數量的 0 和 1 的最長連續子陣列 的長度 示例 1 輸入 0,1 輸出 2 說明 0,1 是具有相同數量0和1的最長連續子陣列。示例 2 輸入 0,1,0 輸出 2 說明 0,1 或 1,0 是具有相同數量0和1的最長連續子陣列。思路來自 連續陣列的解...