Remove Element from Array

Remove Element

Given an array and a value, remove all the instances of that value in the array.
Also return the number of elements left in the array after the operation.
It does not matter what is left beyond the expected length.

Example:
If array A is [4, 1, 1, 2, 1, 3]
and value elem is 1,
then new length is 3, and A is now [4, 2, 3]
 
Try to do it in less than linear additional space complexity.


Method:

Iterate through the array, if current number is the number we want to remove, skip it, otherwise set it to current size of result array, and increase the size of result.

Solution:

Time: O(n)
Space: O(1)

public class Solution {
    public int removeElement(ArrayList<Integer> a, int b) {
        int size = 0;
        for (int i = 0; i < a.size(); i ++) {
            int curr = a.get(i);
            if (curr != b) {
                a.set(size, curr);
                size ++;
            }
        }
        while (a.size() > size) {
            a.remove(a.size() - 1);
        }
        return size;
    }
}