最近参加了小红书的实习面试,一面挺简单,问了3道数据结构的题,然后就是问比赛、问项目,一面回答的还可以;然后昨天进行了2面,问了比赛,问了一些深度学习的基础知识,答得还行,最后出了这么一道算法题,没做出来,感觉完蛋了。。。哎
就是不知道pop和remove的空间复杂度是多少,但也是一种思路吧。面试官跟我说用双指针的方法,当时头有点蒙,没听明白怎么做的。。。。
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