一.解题思路
说明:这题的思考点和#26一样,需要判断哪些操作是原地,哪些不是,所以这题还会有双指针解法。
思路1:一个就是直接通过Python中list remove操作,通过循环判断nums中是否还有重复,有就删除即可。
思路2:双指针操作,i寻找不重复的,j作为起点,匹配到不重复的赋值给j,j加一,最终返回j的数目即可。
二.代码展示
# Python List remove解法
class Solution:
def removeElement(self, nums, val):
# 循环判断val是否在nums中,直到不存在就退出循环
while val in nums:
# 删除一次重复的值
nums.remove(val)
# 剩下的结果都不重复,所以直接返回剩余长度
return len(nums)
# 双指针解法
class Solution:
def removeElement(self, nums, val):
nums_len = len(nums)
# 寻找不重复的index(快指针)
i = 0
# 作为不重复的index(慢指针)
j = 0
while i < nums_len:
if nums[i] != val:
nums[j] = nums[i]
j += 1
i += 1
return j
三.总结其他
总结:后面会花点时间去看看“原地”的一些操作,总结一下发一篇博客,用于方便记录与学习。
交流:如果有什么建议或者疑问可以在文章下面回复哈,期待交流。