Recientemente participé en la entrevista de pasantía de Xiaohongshu. Por un lado, fue muy simple. Hice 3 preguntas sobre la estructura de datos. Luego pregunté sobre la competencia y el proyecto. Al mismo tiempo, la respuesta estuvo bien. Luego, ayer, Tenía 2 preguntas, pregunté sobre la competencia y pregunté al respecto. Algunos de los conocimientos básicos del aprendizaje profundo, la respuesta estuvo bien, y finalmente se hizo una pregunta de algoritmo, pero no la entendí, y sentí que se terminó. . . Oye,
simplemente no conozco la complejidad espacial de pop y remove, pero también es una forma de pensar. El entrevistador me dijo que usara el método de doble puntero, en ese momento estaba un poco confundido y no entendía cómo hacerlo. . . .
def unique(alist):
index=0
while index<len(alist):
count=0
mid_value=alist[index]#用mid_value保存临时的可能需要删除的值,因为下面的pop只是删除了数组后面的相同的值
for j in range(len(alist)-1,index,-1):#逆序遍历
if alist[j] == mid_value:
alist.pop(j)
count+=1
if count !=0:
alist.remove(mid_value)
else:
index+=1#注意这里,是只有count数等于0时才进行index的前移,count为0证明数组里这个数只出现了一次
return alist