LeetCode:Single Number(#136)

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;
}
}
不介意的话,可以请我喝杯咖啡吗?或扫一扫支付宝领红包