lootcode
1.数组
1.1.移动零(283)
给定一个数组 `nums`,编写一个函数将所有 `0` 移动到数组的末尾,同时保持非零元素的相对顺序。
'''
1.快慢指针:
定义两个指针,从头开始遍历,fast指针一直向后移,如果fast指针的值不为零,slow指针加一,并且把fast的值给slow,当fast的值超出序列下标,从slow所处位置开始补零
也可以直接把slow与fast的值进行交换
'''1.2.移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
'''
简单解法1:
直接判断目标值是否还在列表内,如果有直接删除,直到没有就行了
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
while val in nums:
nums.remove(val)
return len(nums)
解法2:
使用双指针,如果快指针不等于目标值,则与慢指针交换值后两指针都进1,否则只有快指针进1,当快指针到列表尾后,返回慢指针的值
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
fast = slow =0
while fast < len(nums):
if nums[fast] != val:
nums[slow] = nums[fast]
slow += 1
fast += 1
return slow
'''1.3.删除有序数组中的重复元素(80)
1.4.颜色分类
最后更新于