package com.interview.algorithms.array; /** * Created_By: stefanie * Date: 14-11-6 * Time: 下午11:09 * * Given an array of integers, every element appears three times except for one. gFind that single one. * First time number appear -> save it in "ones" * Second time -> clear "ones" but save it in "twos" for later check * Third time -> try to save in "ones" but value saved in "twos" clear it. */ public class C4_41A_NonThreeTimeNumber { public static int singleNumber(int[] num) { int ones = 0, twos = 0; for(int i = 0; i < num.length; i++){ ones = (ones ^ num[i]) & ~twos; twos = (twos ^ num[i]) & ~ones; } return ones; } }