数组中只出现一次的数字

思路1:先将数组排序,从第一位比较和后面的数是否相同,相同就跳一位再继续比较,不同就记录一次,出现两次不同就结束

思路1

思路2:

1、异或思想,一个数与自己异或为0,一个数与0异或为自己

  2、由于其它数字两两相同,所以所有数异或则得到这两个不同数的异或结果。取这个结果的第一个1作为标志位

  3、这个标志的1,必须是:这两个数在该位一个为0,一个为1

  4、这样可以将数组分为两组,一组在该标志位为1,一组在该标志位为0,这两个不同数字分别在这两组内

  5、将两组内的数分别异或,得到两个结果则为这两个不同的数

其中有一个语法上容易忽略的坑:==的优先级比&高,所以&时需要加括号。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容