Python中输入三个数字求最大的一段数字,求这段数字中奇数字之和

给定一个数组数据都是整数,其中只有2个数字出现了奇数次其它都是偶数次。找出那2个奇数次的数字

时间复杂度o(n),空间复杂度为o(1)

如果有两个数字出现了奇数次,仳如是 a 和 b则最终 odd 结果为 a^b,但其中一定有差别因为数字不一样,所以其异或结果一定不是0那么也就是其中有一位是1,不论哪一位是1紦数组中所有的那一位是1的数字全部异或,结果就是其中一个出现了奇数次的那个数再和odd异或,得到另一个数字

right = odd & (~odd + 1) # odd的第k位是1,即两个奇數个的数字的第k位一定不同这里也是个骚操作,它找出了数字最右边的那个1

总结一下一种位运算操作是:

我要回帖

更多关于 输入三个数字求最大的 的文章

 

随机推荐