# 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
#
# 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:
#
# 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
# 返回 k。
"""暴力解法,设置一个指针,复制一个数组,直接从头到位遍历一遍,遇到相同的就删掉
然后在结尾补一个超出范围的值(建议为inf)"""
# import copy
#
# class Solution(object):
# def removeElement(self, nums, val):
# """
# :type nums: List[int]
# :type val: int
# :rtype: int
# """
# p = 0
# nums1 = copy.deepcopy(nums)
# for i in range(len(nums)):
# if val != nums[p]:
# p += 1
# else:
# nums.pop(p)
# nums.append(10000000)
# return p
#
# if __name__ == '__main__':
# nums = [3, 2, 2, 3]
# val = 3
# Solution = Solution()
# print(Solution.removeElement(nums, val))
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
pf = 0
ps = 0
for i in range(len(nums)):
if val != nums[pf]:
nums[ps] = nums[pf]
ps += 1
pf += 1
return ps
if __name__ == '__main__':
nums = [3, 2, 2, 3]
val = 3
Solution = Solution()
print(Solution.removeElement(nums, val))