直接用Set集合记录各数字出现情况。
如果当前的数为偶数并且在集合中没有出现过的话。
我们就把他放到集合中并且自除2. 操作次数将会增加一次。
如果出现过的话 就不用操作了 因为他会和以前的那次一起操作 不用记录次数
代码很简短

import java.util.*;


public class Solution {
    /**
     * 返回一个数,代表让这些数都变成奇数的最少的操作次数
     * @param n int整型 代表一共有多少数
     * @param a int整型一维数组 代表n个数字的值
     * @return int整型
     */
    public static int solve (int n, int[] a) {
        HashSet<Integer>set = new HashSet<>();
        int ans=0,x=0;;
        for(int i=0;i<n;i++)
        {
            x=a[i];
               while(x%2==0&&!set.contains(x))
                {
                    set.add(x);
                    x/=2;
                    ans++;
                }
        }
        return ans;
    }
}