LeetCode详解之如何一步步优化到最佳解法:27. 移除元素
LeetCode详解系列的总目录(持续更新中):
LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客
LeetCode详解系列的上一题链接:
LeetCode详解之如何一步步优化到最佳解法:26. 删除有序数组中的重复项-CSDN博客
目录
LeetCode详解系列的总目录(持续更新中):
LeetCode详解系列的上一题链接:
27. 移除元素
解法:最终版
解法思路:
代码:
解法性能:
解法分析:
27. 移除元素
本题题目链接:27. 移除元素 - 力扣(LeetCode)
解法:最终版
解法思路:
首先,题目的要求中,下面的点很重要:
根据上面的提示,我们只需要确保将nums中与val不同的元素放到nums的前k个位置即可。我们可以用“快慢指针”的思路来解这道题。即,“慢指针”指明不等于val的元素有多少个;“快指针”遍历nums数组。
当“快指针”遍历nums数组时,遇到不等于val的元素,则将该元素放到“慢指针”所指向的位置,且“慢指针”向后移一位。
对应的代码如下所示:
代码:
class Solution:def removeElement(self, nums: List[int], val: int) -> int:slow_pt = 0for num in nums:if num != val:nums[slow_pt] = numslow_pt += 1return slow_pt
解法性能:
解法分析:
使用该方法,不论是消耗的时间,还是消耗的空间,都是较优的。