zoukankan      html  css  js  c++  java
  • LeetCode OJ

     1 /**
     2      * Given an array of integers, every element appears twice except for one. Find that single one.
     3      * 要求最好是时间复杂度为O(n),空间复杂度为O(1)
     4      * 这道题之前在面试的时候,被问到过,思路是借用按位操作符的性质:
     5      * 两个相同的数异或之后为0;那么将数组中所有的数做了异或操作后就是那个出现1次的数
     6      * @param A
     7      * @return
     8      */
     9     public int singleNumber(int[] A){
    10         int r = A[0];
    11         for(int i=1;i<A.length;i++)
    12             r = r^A[i];
    13         return r;
    14     }
     1 /**
     2      * Given an array of integers, every element appears three times except for one. Find that single one.
     3      * 下面的做法是可以扩展到除了一个数之外,这个数组中所有的数都出现x次的情况下
     4      * @param A
     5      * @return
     6      */
     7     public int singleNumber3(int[] A){
     8         int[] count = new int[32];
     9         int r = 0;
    10         for(int i=0;i<32;i++)
    11         {
    12             count[i] = 0; //初始化
    13             for(int j=0;j<A.length;j++)
    14             {
    15                 int t = (A[j]>>i)&1;
    16                 if(t == 1)
    17                     count[i]++;
    18             }
    19             r = r | (count[i]%3<<i);//如果每个数出现x次,则modx
    20         }
    21         return r;
    22     }
    有问题可以和我联系,bettyting2010#163 dot com
  • 相关阅读:
    51nod1711 平均数
    51nod1204 Parity
    51nod1274 最长递增路径
    51nod1403 有趣的堆栈
    51nod1364 最大字典序排列
    bzoj1857: [Scoi2010]传送带
    bzoj3224: Tyvj 1728 普通平衡树
    bzoj2396: 神奇的矩阵
    bzoj2428: [HAOI2006]均分数据
    splay入门
  • 原文地址:https://www.cnblogs.com/echoht/p/3688390.html
Copyright © 2011-2022 走看看