只出现一次的数字
给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。
备注:
你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?
答题思路:因为一个数组中除了一个元素,其他元素都出现了两次,所以可以使用位用算异或(^)来实现,因为相同的元素进行异或,
其结果为0,所以当数组中的所有元素进行异或后,最后剩下的值就是只出现一次的那个值。
代码如下:
- public class Solution {
- public int singleNumber(int[] A) {
- int num = 0;
- for(int i = 0; i < A.length; i++) {
- num ^= A[i];
- }
- return num;
- }
- }