Given an array of integers, every element appears three times except for one. Find that single one.
给一个数组,每个数字都出现三次,只有一个数字出现一次,找出这个出现一次的数字。
参考代码:
解题思路:定义长度32的数组,每个位置存储的是,nums里每个数字的第i个位置的 1 的个数,存储完毕i的位置的 1 的个数后,进行取模3运算,如果结果为 0 说明被求数字在这个位置上的bit是0,如果为 1 则说明被求数字这个位置上的数字是 1,一次类推,求完第一个位置,求第二个,再求第 i 个 位置,所有的结果进行 或(|) 运算,最终把所求的数字求出。
时间是 O(32*N),如果把出现3次改为k次,只需要改为 模 k即可