index
title: 数组中只出现一次的数字 date: 2019-08-21T11:00:41+08:00 draft: false categories: offer
题目
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
解题思路
两个相等的数字进行异或的结果为0
在这个特殊的数组中,重复出现的数字只能为2次,那么如果将所有数字异或 就等价与将两个不同的数字进行异或
异或的结果肯定有一位为1,那么这两个不同的数字,在这一位上不同。
找到第一个为1的位,并将第一位为1的位是否为1作为分组条件,相同的数字一定在同一个分组里,整个数组分组异或
得到两个结果,即为两个不同的数
Last updated
Was this helpful?