27、Remove Element

Given an array nums and a value val, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length.

Example:

Given nums = [3,2,2,3], val = 3, Your function should return length =
2, with the first two elements of nums being 2. It doesn’t matter what
you leave beyond the returned length.

Solution-1 - Python:

    def removeElement(self, nums, val):
        """ :type nums: List[int] :type val: int :rtype: int """
        while val in nums:
            nums.remove(val)
        return len(nums)

Solution-2 - Python:

#!/usr/bin/env python
# -*- coding = utf-8 -*-

""" @ Create Time: 2017/12/24 @ Author: songpo.zhang @ Target: """

# def removeElement(nums, val):
# while val in nums:
# nums.remove(val)
# return len(nums)

# def removeElement(nums, val):
# i, last = 0, len(nums) - 1
# while i <= last:
# if nums[i] == val:
# nums[i], nums[last] = nums[last], nums[i]
# last -= 1
# else:
# i += 1
# return last + 1

def removeElement(nums, val):
    n = 0
    for i in range(0, len(nums)):
        if nums[i] != val:
            nums[n] = nums[i]
            n += 1

    return n

nums = [0,1,2,2,3,0,4,2]
val = 3
print(removeElement(nums, val))
print(nums)