回覆列表
  • 1 # 使用者2885548583173

    讓我們簡化一下這個問題:有 2k+1 個整數,除一個以外均恰好出現兩次。經典做法是,將此 2k+1 個整數全部異或(xor)起來。由於 xor 的性質:A xor A = 0, A xor B = B xor A, A xor 0 = A,易證明最終結果就是隻出現一次的那個數。回到原問題,我們需要構造一種「四數相消」的異或運算。異或的本質其實是,對於每一個二進位制位進行模 2 加法運算。所以此問題只需要改模 2 為模 4 即可(最後將結果除以 2)。例:[3, 5, 2, 5, 3, 2, 5, 5, 3, 3]二進位制位:011101010101011010101101011011模 4 加法:020每位除 2,化為十進位制:010 => 2時間複雜度 O(n * 位數),額外空間 O(1)。

  • 2 # 範閒不是我

    #include

    union uu{

    int x;

    unsigned char c[4];

    } u;

    main()

    {

    int x = 12345678;

    unsigned char s[4];

    int i;

    u.x = x ;

    for (i=0;i

    for (i=0;i

    printf("\n");

    for (i=0;i

    x = u.x;

    printf("%d\n",x);

    }

  • 中秋節和大豐收的關聯?
  • 順鑫這名字打分率多少?