找出两个数组的差,比如A = [1,1,1,2,2,2], B = [2,2,3],在A出现在B不出现的集合是[1,1,1,2]

public class Solution {
    public static void main(String[] args) {
        List<Integer> A = new ArrayList<>(Arrays.asList(1,1,1,2,2,2));
        List<Integer> B = new ArrayList<>(Arrays.asList(2,2,3));
        System.out.println(findSubset(B, A));
        System.out.println(findSubset(A, B));
    }
    public static List<Integer> findSubset(List<Integer> A, List<Integer> B) {
        List<Integer> result = new ArrayList<>();
        if (A.size() == 0) return result;
        if (B.size() == 0) {
            result.addAll(A);
            return result;
        }
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int num : A) {
            map.put(num, map.getOrDefault(num, 0) + 1);
        }
        for (int num : B) {
            if (map.containsKey(num)) {
                map.put(num, map.get(num) - 1);
            }
        }
        for (int num : map.keySet()) {
            for (int i = 0; i < map.get(num); i++) {
                result.add(num);
            }
        }
        return result;
    }
}
class Solution(object):
    def findSubset(self, A, B):
        if not A:
            return []
        elif not B:
            return A

        counter = collections.Counter(A)
        for num in B:
            if num in counter:
                counter[num] -= 1
        ret = []
        for k, v in counter.iteritems():
            ret.extend([k] * v)
        return ret