Pour un tableau avec des valeurs positives et négatives, renvoyer la taille de coupe alternée maximale continue, deux éléments sont alternés s'ils ont des signes différents, zéro est considéré comme négatif et positif.Tranche la plus longue avec des nombres entiers positifs et négatifs alternés
Exemple a = [1, -5, 23, 0, 1, 1, 0, 2, -5, 3, -1, 1, 2, 3]
Compte tenu de retour 7
(la séquence [1, 0, 2, -5, 3, -1, 1]
a au maximum la taille de la tranche alternatif)
Le temps d'exécution attendu est O(n)
.
J'ai essayé de résoudre le problème comme sequnce avec la somme max:
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
Je suppose que cela est une mauvaise approche, mais ne peut pas penser à d'autres
Et quel est votre problème spécifique? Montrez vos efforts pour lancer la discussion. – MBo
J'ai ajouté mon approche aussi, désolé de ne pas le faire initialement @MBo – theSharpShooter
ne devrait pas '1, -5, 23, 0, 1, 0, 2, -5, 3, -1, 1' être le plus long de ces tranche? – thebenman