我是靠谱客的博主 贪玩奇迹,这篇文章主要介绍【leetcode】给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。,现在分享给大家,希望可以做个参考。

样例

给出 [1,2,2,1,3,4,3],返回 4

挑战

一次遍历,常数级的额外空间复杂度

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
public class Solution { public int singleNumber(int[] A) { if(A == null || A.length == 0) { return -1; } int rst = 0; for (int i = 0; i < A.length; i++) { rst ^= A[i]; } return rst; } }

 

很好理解
比如:
0 xor 1=1;
1 xor 1=0;
也就是说对同一个字符进行两次异或运算就会回到原来的值。

 

我的低级做法

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Solution { public int singleNumber(int[] A) { // write your code here boolean flag=false; for (int i=0;i<A.length;i++){ for(int j=0;j<A.length;j++){ if(A[i]==A[j]&&i!=j){ flag=true; break; } } if(flag==false){ return A[i]; }else{ flag=false; } } return 0; } }

 

2018/12/24

今天开始刷算法题,实在是太骚了

最后

以上就是贪玩奇迹最近收集整理的关于【leetcode】给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。的全部内容,更多相关【leetcode】给出2*n内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部