LeeCode 26 删除有序数组中的重复项

题目

给定一个排序数组,在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
LeeCode 26 删除有序数组中的重复项_第1张图片

解决方法

双指针
以数组[1,2,2,3]为例,使用双指针(slow指针与fast指针)
LeeCode 26 删除有序数组中的重复项_第2张图片

  1. 两个指针首先同时指向第一个数
  2. 当两个指针指向的数相同时。fast指针向前走一步
  3. 当两个指针指向的数不相同时,slow指向向前走一步,将fast指针的值赋值给slow指针,然后fast指针向前走一步
  4. 当fast’指针走完全部数后,整个过程结束

Python:

l = len(nums)
if nums:
	slow = 0
	for fast in range(0,l):
		if nums[slow] != nums[fast]:
			slow = slow+1
			nums[slow] = nums[fast]
	return slow+1
else:
	return 0

参考:力扣加加

你可能感兴趣的:(算法)