# Given an array and a value,
# 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 in place with constant memory.
#
# The order of elements can be changed.
# It doesn't matter what you leave beyond the new length.
#
# Example:
# Given input array nums = [3,2,2,3], val = 3
#
# Your function should return length = 2, with the first two elements of nums being 2.
class Solution():
def removeElement(self, x, val):
cur = 0
for _ in range(len(x)):
if x[cur] == val:
del x[cur]
else:
cur += 1
return len(x)
if __name__ == "__main__":
assert Solution().removeElement([3, 2, 2, 3], 3) == 2
assert Solution().removeElement([1, 2, 3, 4, 5, 2, 2], 2) == 4