給定乙個二進位制陣列, 找到含有相同數量的 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的最長連續子陣列。思路來自 連續陣列的解...