‘’’
—个有序序列,请原地删除序列中重复出现的元素,返回删除重复元素后的序列长度。
使用 。O(1)额外空间来完成这个任务,例如 [0,0,1,1,1,2,2,3,3,4,4,4,5],最终返回的长度 , 序列前6个元素是 0 1 2 3 4 5
‘’’
‘’’
设置—个哨兵index,初始值赋为0。用—个for循环从索引1开始遍历lst,i做送代变量, 如果 lst[i]!=lst[index],就说明lst[i]是—个比lst[index]大的元素,它应该被放置在index+1的位置 上
‘’’
def remove_duplicates(lst):index = 0for i in range(1, len(lst)):if lst[i] != lst[index]: #如果不相等 就移动哨兵index += 1lst[index]=lst[i] #将不相等的元素放在哨兵的位置上return lst[0:index+1]
if __name__ == '__main__':lst= [0,0,1,1,1,2,2,3,3,4,4,4,5]print(remove_duplicates(lst))