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

样例

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

挑战

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

 

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;
也就是说对同一个字符进行两次异或运算就会回到原来的值。

 

我的低级做法

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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部