from typing import List class Solution: def removeElement(self, nums: List[int], val: int) -> int: # Initialize two pointers, one for iterating the list and one for the insertion point. i = 0 k = 0 while i < len(nums): if nums[i] != val: # If the current element is not equal to val, copy it to the insertion point. nums[k] = nums[i] k += 1 i += 1 return k # Example usage and custom judge test if __name__ == "__main__": solution = Solution() # Test case 1 nums1 = [3, 2, 2, 3] val1 = 3 k1 = solution.removeElement(nums1, val1) print(k1) # Expected output: 2 print(nums1[:k1]) # Expected output: [2, 2] # Test case 2 nums2 = [0, 1, 2, 2, 3, 0, 4, 2] val2 = 2 k2 = solution.removeElement(nums2, val2) print(k2) # Expected output: 5 print(nums2[:k2]) # Expected output: [0, 1, 4, 0, 3]