LeetCode 137は一度しかIIデジタル表示されます

LeetCode 137は一度しかIIデジタル表示されます

ソートはまだに頼ることができました。(n)はOの余分なスペースと時間の複雑性を開くために必要な、単一のデータ比較水ので、私はいくつかの時間の考えを費やしていないが、

デジタルデエンファシス、Oの時間複雑度(n)は、余分なスペースと、その後にスタートビット・コンピューティングから、開きません

要素が一度だけ表示され、残りの3つの要素のそれぞれは、あらゆるのみの合計で分割した後、二進数に各分割を入れて表示され3xたり3x + 1、後の%3仕事のデエンファシスが完了した後に


これにより問題の意味は、ビット演算の設計により、なる加法器と、%3デジタル回路の動作

最大数がされているので3、少なくとも必要な2bit業務を達成するために

動作のために提供される低数はa、高くb、入力v

各演算の終了時に低いan高として、bn

C言語バージョンを使用ビット算術記号

特定の設計に関しては、それは自由な遊びです

容易に概略的なブラインドドローは次のとおり、任意のデジタル回路図の仕様に従っていませんでした_(:з「∠)_

0

この方法の一つ

1

方法二

2

メソッドスリー

以来an導出は、実質的に同じ、名前のみでan誘導された部分

式に図

c = a ^ v
d = a & v
e = b | d
f = c ^ e
an = c & f
bn = e & f
an = c & f
   = c & (c^e)
   = c & (~e)
   = c & (~(b|d))
   = (a^v) & (~b) & (~d)
   = (a^v) & (~b) & (~(a&v))
   = (a^v) & (~b) & (a|v)
   = (a^v) & (~b)

C

int singleNumber(int* nums, int numsSize){
    int a = 0, b = 0;
    for (int i = 0; i < numsSize; ++i) {
        a = (a^nums[i]) & ~b;
        b = (~a & nums[i]) ^ b;
    }
    return a;
}

おすすめ

転載: www.cnblogs.com/Simon-X/p/11415644.html