小红书计算机视觉实习生2面:返回一个数组中不重复的数字,要求空间复杂度为O(1)

最近参加了小红书的实习面试,一面挺简单,问了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

猜你喜欢

转载自blog.csdn.net/AWhiteDongDong/article/details/111726867