在原数组中删除重复元素:假设 nums = [1,1,1,2,2,3,3,3,3,4]; 经过删除后,得到的结果为:nums=[1, 2, 3, 4]
数组在做增删时,需要借助index,操作起来比较麻烦(相对链表而言更难),个人觉得不适合用for 的方式控制指针运动,而是应当在循环体中控制指针更为容易。
可以先定义一个死循环,然后在循环体内部定义跳出条件。
def dropDuplicate(nums):
dic = {}
ptr = 0
while True:
if ptr>=len(nums):
break
if nums[ptr] in dic:
nums.pop(ptr)
ptr-=1
else:
dic[nums[ptr]]=1
ptr+=1
if __name__ =="__main__":
nums = [1,1,1,2,2,3,3,3,3,4]
dropDuplicate(nums)
print nums
上述代码中,ptr表示列表的指针,每轮循环指针前进一步,当删除元素时,指针应当停在原处,以便重新判断删除后该位置上的元素是否符合保留的条件。当指针即将发生越界时,提前跳出循环。