我是靠谱客的博主 贪玩奇迹,最近开发中收集的这篇文章主要介绍【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 + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部