137. Single Number II

一、题目

  1、审题

  

  2、分析

    给出一个非空数组,其中包含一个只出现一次的元素,其他的均出现3次,找出只出现一次的那个元素。

二、解答

  1、思路:

    采用二进制位运算符进行计算:

      与 &: 1 & 1 = 1, 0 & 0 = 1 & 0 = 0;

      或 |   :1 | 0 = 1 | 1 = 1, 0 | 0 = 0;

      非~ :  ~1 = 0, ~0 = 1;

      异或^ : 1 ^ 1 = 0 ^ 0 = 0, 1 ^ 0 = 1;

   

 

    public int singleNumber2(int[] A) {
        int ones = 0, twos = 0;
        
        for (int i = 0; i < A.length; i++) {
            ones = (ones ^ A[i]) & ~twos;
            twos = (twos ^ A[i]) & ~ones;
        }
        
        return ones;
    }
    

    

原文地址:https://www.cnblogs.com/skillking/p/9766596.html