Single Number
Description
Given an array of integers, every element appears twice except for one. Find that single one.Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
解决方法
方法
两个相同到数异或是0,将这组数顺序全都异或,最后就是只出现一次到数字
public class SingleNumber {
public static void main(String[] args) {
System.out.println(singleNumber(new int[] { 1, 1, 2, 3, 2 }));
System.out.println(singleNumber(new int[] { 1, 1, 2, 3, 2,3,4 }));
System.out.println(singleNumber(new int[] { 4,3,1, 1, 2, 3, 2 }));
System.out.println(singleNumber(new int[] { 3, 1, 2, 3, 2 }));
}
public static int singleNumber(int[] nums) {
for (int i = 1; i < nums.length; i++) {
nums[0] = nums[0] ^ nums[i];
}
return nums[0];
}
}
知识点
java 异或 符号 为 ^
^ 在正则表达式中问“非”的意思
非在 java 中是 ~