为什么会有人攻击我用织梦做的网站,wordpress 页面404,创意设计执行提案,wordpress 怎么登录给定数组#xff0c;只有一个元素出现过奇数次
思路#xff1a; 考虑到异或运算的性质——两个等值数的异或结果等于0#xff0c;两个不等值的数异或结果为1#xff0c; 将给定数组的所有元素异或起来#xff0c;最终结果就是那个“唯一出现过计数次”的数。
给定数组只有一个元素出现过奇数次
思路 考虑到异或运算的性质——两个等值数的异或结果等于0两个不等值的数异或结果为1 将给定数组的所有元素异或起来最终结果就是那个“唯一出现过计数次”的数。
给定数组只有两个元素出现过奇数次
思路 在上述的基础上同样对所有元素做异或运算那么结果必然不是0。也就是说异或的结果存在某一位非0假设第a位。这提醒我们可以根据这个非零位对给定数组中的元素进行分类——分成两类。第一类二进制表示第a位上为0的元素第二类二进制表示第a位上为1的元素。
import java.util.Arrays;public class findLostNum {public static int[] find2Num(int[] arr){int[] resnew int[2];int xor0;for (int i 0; i arr.length; i) {xor^arr[i];}if(xor0){return null;}int sep1;while ((xorsep)0){ // 找到xor的二进制表示 最靠右 的‘1’ 的位置sep1;}for (int i 0; i arr.length; i) {if((separr[i])0){res[0]^arr[i];}else {res[1]^arr[i];}}return res;}public static void main(String[] args) {int[] arraynew int[]{4,1,2,2,5,1,4,3};int[] resfind2Num(array);System.out.println(Arrays.toString(res));}
}