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)