使用位运算,一个int类型共四个字节,因此有32位,统计数组所有数字二进制形式每一位1出现的次数,在创建的新数组bit上进行累加,如果是出现k次的数字,那么位数组上相应位一定是k,因此可以被k整除,所以无法被k整除的二进制位,使用左移操作把所有无法被k整除的位相加,结果即为只出现一次的数字。 public int med(int arr[],k){ int[] bit = new int[32]; for(int i = 0; i < arr.length; i++){ for(int j = 0; j < 32; j++){ ...