LeetCode 27. 移除元素

题目

给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

方法一
class Solution(object):
    def removeElement(self, nums, val):
        i = 0
        size = len(nums)
        while i < size:
            if nums[i] == val:
                j = i + 1
                while j < len(nums):
                    nums[j-1] = nums[j]
                    j = j + 1
                i = i - 1
                size = size - 1
            i = i + 1
        return size
方法二:双指针

通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。


class Solution(object):
    def removeElement(self, nums, val):
        slow, fast = 0, 0
        while fast < len(nums):
            if nums[fast] != val:
                nums[slow] = nums[fast]
                slow = slow + 1
            fast = fast + 1
        return slow
参考

代码相关:https://programmercarl.com/
Leetcode官方解题

你可能感兴趣的:(LeetCode 27. 移除元素)