题目描述
如今有一个整数类型的数组,数组中只有一个元素只出现一次,其他元素都出现三次。你须要找出只出现一次的元素
注意:
你须要给出一个线性时间复杂度的算法,你能在不使用额外内存空间的状况下解决这个问题么?web
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?算法
超出个人知识范畴了。。数组
class Solution { public: /** * * @param A int整型一维数组 * @param n int A数组长度 * @return int整型 */ int singleNumber(int* A, int n) { // write code here int ones = 0; int twos = 0; int threes; for(int i = 0; i < n; i++){ int elem = A[i]; twos |= ones & elem; ones ^= elem; threes = ones & twos; ones &= ~threes; twos &= ~threes; } return ones; } };
运行时间:3ms
占用内存:484kapp