引言:
双指针就是两个指针咯,指的是什么呢?是数列的index,为什么需要两个呢?希望在一个循环里做两个不同的,但有关联的事情
题目: leetcode 27; 代码随想录打卡:第一天第二部分
何为“原地删除”,“删除”就是需要我们把数列里不需要的部分去除,“原地“需要我们不能定义新的存储空间,把数列的值搬进去。
那我们通过查找,把不需要的元素”扣“掉?不可以,因为数列的储存空间是连续的,不可以从中中断;那么要想原地删除,就需要我们从头到位的过一遍:需要的保留,不需要的覆盖掉
拿什么覆盖?拿后面的元素覆盖。怎么拿后面的元素覆盖呢?使用双指针:fast &slow;
fast指针判断一个元素是需要删除,作为for循环的index。他指向需要存储的内容
slow指针用于原地覆盖数列。他指向需要存储的位置。
快指针向前一步一步走,往事历历在目,忽略一些旧事🥺
慢指针覆盖内心的伤疤,却记住了曾经的美好🥺
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
n = len(nums)
slow = 0
for fast in range(0,n):
if nums[fast] != val:
nums[slow] = nums[fast]
slow +=1
return slow