Breve introducción de la idea:
Teniendo en cuenta la clasificación de la matriz, establecemos dos punteros start y cur,
donde start apunta al último número único que se puede determinar,
cur apunta al número investigado actualmente y
apuntan a los dos primeros elementos al principio
. Los dos elementos no son iguales,
señalamos comenzar a cur y cur apunta a cur + 1.
Si los elementos apuntados son iguales, registramos cur en una lista de índice de matriz,
y luego movemos cur hacia atrás y comenzamos sin cambios.
Finalmente, después de invertir la lista de índice, sacamos y eliminamos los números repetidos correspondientes del primer elemento después de la inversión, y
finalmente sacamos la longitud.
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
length = len(nums)
start = 0
cur = 1
suma = 1
indexlist = []
while cur < length:
if nums[start] != nums[cur]:
start = cur
cur += 1
suma += 1
elif nums[start] == nums[cur]:
indexlist.append(cur)
cur += 1
indexlist = indexlist[::-1]
for pos in indexlist:
nums.pop(pos)
return suma