impl Solution {
    // Time O(n) - Space O(1)
    pub fn remove_duplicates(nums: &mut Vec<i32>) -> i32 {
        // The maximum number of duplicates allowed.
        const MAX_DUPLICATES: usize = 2;
        // Nothing to do.
        if nums.len() <= MAX_DUPLICATES {
            return nums.len() as i32;
        }
        // A write pointer.
        let mut w = MAX_DUPLICATES;
        for r in MAX_DUPLICATES..nums.len() {
            // Check if the value x positions back is the same.
            if nums[r] != nums[w - MAX_DUPLICATES] {
                nums[w] = nums[r];
                w += 1;
            }
        }
        w as i32
    }
}