classSolution: defremoveElement(self, nums: List[int], val: int) -> int: p=len(nums) if p == 0: return0 q,p=0,p-1 # 相遇 while p > q: while nums[p]== val and p >q: # 找从后向前第一个非 val p-=1 while nums[q]!=val and q <p: # 从前向后找到第一个 val q+=1 # swqp temp = nums[q] nums[q]=nums[p] nums[p]=temp # 检查 if nums[p]== val: return p else: return p+1