Single Number II

来源:互联网 发布:制作电子相册软件 知乎 编辑:程序博客网 时间:2024/04/27 16:22

我感觉这种题十分经典!

贴一个别人的思路解析:

To solve this problem using only constant space, you have to rethink how the numbers are being represented in computers -- using bits.

If you sum the ith bit of all numbers and mod 3, it must be either 0 or 1 due to the constraint of this problem where each number must appear either three times or once. This will be the ith bit of that "single number".

A straightforward implementation is to use an array of size 32 to keep track of the total count of ith bit.

因此就有了下面的代码:

class Solution {public:    int singleNumber(int A[], int n) {        int bits[32] = {0};        for (int i = 0; i < n; ++i) {            for (int j = 0; j < 32; ++j) {                bits[j] += (A[i] >> j) & 1;            }        }        int res = 0;        for (int j = 0; j < 32; ++j) {            res |= (bits[j] % 3) << j;        }        return res;    }};

http://oj.leetcode.com/problems/single-number-ii/

0 0
原创粉丝点击