Single Number(#136)
编号 | 名称 | 等级 |
---|
136 | Single Number | Easy |
思路
题目要求在给出的数组中,要求找到一个单独的数字。看了一些答案后总结出来了一个运算规律。
按位异或
N ^ N = 0
0 ^ N = N
通过这个规律,那么只要对数组里面的每个数进行按位异或就好。相同的数字按位异或就会是 0 , 剩下的那个单独的数字按位异或还是自己本事,就会直到最后的结论。
代码
1
2
3
4
5
6
7
8
9
| class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
for(int i = 0; i < nums.length;i++) {
ans ^= nums[i];
}
return ans;
}
}
|
扩展
这种方法还适用于字符串中的唯一一个元素。
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| class Main {
public static void main(String[] args) {
char[] chars = new char[]{'a', 'a', 'b'};
System.out.println(singleChar(chars));
}
// 该程序是判断 数字/字符/字符串。toArrayChar 中的唯一存在的字符
// 主要方法位 N ^ 0 = N; N ^ N = N
private static char singleChar(char[] chars) {
int ans = 0;
for (int aChar : chars) {
ans ^= aChar;
}
return (char) ans;
}
}
|