LeetCode详解系列的总目录(持续更新中):
LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客
LeetCode详解系列的上一题链接:
LeetCode详解之如何一步步优化到最佳解法:26. 删除有序数组中的重复项-CSDN博客
目录
[27. 移除元素](#27. 移除元素)
27. 移除元素
本题题目链接: 27. 移除元素 - 力扣(LeetCode)
解法:最终版
解法思路:
首先,题目的要求中,下面的点很重要:

根据上面的提示,我们只需要确保将nums中与val不同的元素放到nums的前k个位置即可。我们可以用"快慢指针"的思路来解这道题。即,"慢指针"指明不等于val的元素有多少个;"快指针"遍历nums数组。
当"快指针"遍历nums数组时,遇到不等于val的元素,则将该元素放到"慢指针"所指向的位置,且"慢指针"向后移一位。
对应的代码如下所示:
代码:
python
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
slow_pt = 0
for num in nums:
if num != val:
nums[slow_pt] = num
slow_pt += 1
return slow_pt
解法性能:

解法分析:
使用该方法,不论是消耗的时间,还是消耗的空间,都是较优的。