給定具有正值和負值的數組,返回最大連續切片大小,如果兩個元素具有不同的符號,則返回兩個元素交替,零被視爲負值和正值。交替正整數和負整數的最長切片
例 鑑於a = [1, -5, 23, 0, 1, 1, 0, 2, -5, 3, -1, 1, 2, 3]
返回7
(序列[1, 0, 2, -5, 3, -1, 1]
具有最大交片大小)
預期運行時是O(n)
。
我試圖解決像最大總和sequnce問題:
def sol(a):
n = len(a)
l = 0
left = 0
right = 0
tot = 1
for i in range(1,n):
if a[i]*a[i-1] > 0:
l = i + 1
else:
if i-l > right-left:
right = i
left = l
tot = max(tot,right-left+1)
return tot
我想這是一個錯誤的做法,但想不出其他
你的具體問題是什麼?展示你的努力來啓動討論。 – MBo
我也加了我的方法,對不起,最初@MBo – theSharpShooter
應該不是'1,-5,23,0,1,0,2,-5,3,1,1'是最長的片? – thebenman