脑筋急转弯?大概吧
作者:互联网
n 个数,求有多少数对异或出来后 二进制下有奇数个1(n 大小一百万)
可以发现只有二进制下有奇数个1的数和二进制下有偶数个1的数异或出来后是有奇数个1,因为异或消掉的1都是成对出现的
按1的个数分组然后把集合size乘起来即可
给定 n 长度的数列,其中只有两个数出现过奇数次,求这两个数是啥(n 大小一百万,空间极小)
设这两个数是 a 和 b,容易想到异或,如果数列全部异或起来的值的二进制下某一位是 1,说明 a 和 b 有且仅有一个数这一位是 1,那么只需要找到这一位是 1 的全部的数异或起来的值即可
读入的时候同时开一个大小是 64 的数组,如果当前读入的数某一位是 1 就把这个数异或进这个 1 对应的位置即可
标签:急转弯,奇数,二进制,一位,异或,大概,读入,脑筋,数是 来源: https://www.cnblogs.com/Chiaro/p/problemset-njjzw.html