[数组]——移除元素
【数组】——移除元素
由于数组的存储空间是连续的,不能直接删除元素,只能覆盖
暴力解法:
1.获得数组长度
2.开始第一层循环,寻找要删除的元素(遍历数组元素)
3.寻找到删除元素,开始第二层循环,该元素后的数依次相前移(更新数组)
3.返回数组当前长度
时间复杂度为\(O(n^2)\),空间复杂度为\(O(1)\)
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
size = len(nums)
i=0
while i<size:
if nums[i] == val:
j=i+1
while j<size:
nums[j-1] = nums[j]
j=j+1
i=i-1
size=size-1
i=i+1
return size
双指针法:
1.初始双指针,计算数组长度
2.快慢指针遍历数组(快指针指向非目标元素,赋值给慢指针)
3.快指针寻找到目标元素自加1(两个则自加2),慢指针指向目标元素
4.快指针替换慢指针值(更新数组)

时间复杂度\(O(n)\),空间复杂度\(O(1)\)
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
slow=0
fast=0
size=len(nums)
while fast<size:
if val != nums[fast]:
nums[slow] = nums[fast]
slow+=1
fast+=1
return slow

浙公网安备 33010602011771号