Approach 1: Optimal

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        left = 0
 
        for right in range(len(nums)):
            if nums[right] == val:
                continue
            
            nums[left] = nums[right]
            left += 1
        
        return left

Complexity

Time:
Space:

Other Languages

Go

func removeElement(nums []int, val int) int {
    left := 0
 
    for i := range len(nums) {
        if nums[i] == val {
            continue
        }
        
        nums[left] = nums[i]
        left += 1
    }
 
    return left
}