Leetcode Brush Question Record-27. Eliminar elementos

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
El requisito del problema es usar un tamaño constante de complejidad espacial

Idea: establecemos un puntero de inicio, un puntero de fin,
uno desde el primero y otro desde la cola

Si el elemento señalado por start es igual a val, se intercambiará con la posición señalada por end y el final se moverá hacia adelante.
Tenga en cuenta que start no puede moverse en este momento.
Si el elemento señalado por start no es igual a val, entonces mueva el inicio hacia atrás

Cuando inicio y fin coinciden, inicio es el deseado

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        length = len(nums)
        if length == 1:
            return 0 if nums[0] == val else 1
        start = 0
        end = length - 1
        
        #for i,value in enumerate(nums):
        while start <= end:
            if nums[start] == val:
                nums[start],nums[end] = nums[end],nums[start]
                end -= 1
            else:#nums[start] != val
                start += 1
        return start
59 artículos originales publicados · Me gustaron 14 · Visitantes más de 20,000

Supongo que te gusta

Origin blog.csdn.net/weixin_41545780/article/details/105477688
Recomendado
Clasificación