Intersection Of Sorted Arrays

Find the intersection of two sorted arrays.
OR in other words,
Given 2 sorted arrays, find all the elements which occur in both the arrays.

Example :

Input : 
    A : [1 2 3 3 4 5 6]
    B : [3 3 5]

Output : [3 3 5]

Input : 
    A : [1 2 3 3 4 5 6]
    B : [3 5]

Output : [3 5]

NOTE : For the purpose of this problem ( as also conveyed by the sample case ), assume that elements that appear more than once in both arrays should be included multiple times in the final output

Solution:

Time: O(n + m)
Space: O(n + m)

public class Solution {
    // DO NOT MODIFY THE LIST. IT IS READ ONLY
    public ArrayList<Integer> intersect(final List<Integer> A, final List<Integer> B) {
        int i = 0;
        int j = 0;
        ArrayList<Integer> result = new ArrayList<>();
        while (i < A.size() && j < B.size()) {
            int aVal = A.get(i);
            int bVal = B.get(j);
            if (aVal == bVal) {
                result.add(aVal);
                i ++;
                j ++;
            } else if (aVal < bVal) {
                i ++;
            } else {
                j ++;
            }
        }
        return result;
    }
}