ホームページ > バックエンド開発 > PHPチュートリアル > すべてのペアリングのビットごとの XOR

すべてのペアリングのビットごとの XOR

Patricia Arquette
リリース: 2025-01-16 22:07:12
オリジナル
911 人が閲覧しました
<code class="language-php"><?php
function xorAllPairings($nums1, $nums2) {
    $m = count($nums1);
    $n = count($nums2);
    $result = 0;

    for ($i = 0; $i < 32; $i++) {
        $count1 = 0;
        $count2 = 0;

        foreach ($nums1 as $num) {
            if (($num >> $i) & 1) {
                $count1++;
            }
        }

        foreach ($nums2 as $num) {
            if (($num >> $i) & 1) {
                $count2++;
            }
        }

        $totalCount = $count1 * $n + $count2 * $m;
        if ($totalCount % 2 != 0) {
            $result |= (1 << $i);
        }
    }

    return $result;
}

// Example 1
$nums1 = [2, 1, 3];
$nums2 = [10, 2, 5, 0];
echo xorAllPairings($nums1, $nums2); // Output: 13

// Example 2
$nums1 = [1, 2];
$nums2 = [3, 4];
echo xorAllPairings($nums1, $nums2); // Output: 0
?></code>
ログイン後にコピー

Bitwise XOR of All Pairings

  1. すべてのペアリングのビットごとの XOR

難易度:

トピック: 配列、ビット操作

非負の整数を含む 2 つの 0 インデックス配列 nums1nums2 を指定します。 配列 nums3 には、nums1nums2 の間のすべてのペアのビット単位の XOR が含まれます (nums1 の各整数は、nums2 のすべての整数と 1 回だけペアになります)。 nums3 内のすべての整数のビット単位の XOR を返します。

例 1:

  • 入力: nums1 = [2,1,3]、nums2 = [10,2,5,0]
  • 出力: 13
  • 説明: 可能な nums3 配列は [8,0,7,2,11,3,4,1,9,1,6,3] です。これらすべての数値のビット単位の XOR は 13 です。

例 2:

  • 入力: nums1 = [1,2]、nums2 = [3,4]
  • 出力: 0
  • 説明: 可能な nums3 は [2,5,1,6] です。 2 ^ 5 ^ 1 ^ 6 = 0.

制約:

  • 1 ≤ nums1.lengthnums2.length ≤ 105
  • 0 ≤ nums1[i]nums2[i] ≤ 109

ヒント: 個々の整数の数が最終的な答えにどのような影響を与えるかを考えてみましょう。 nums1 の長さが m で、nums2n である場合、nums1 の各数値は n 回繰り返され、nums2 の各数値は XOR 合計で m 回繰り返されます。

解決策:

重要な観察は、XOR 演算が結合的で可換的であるということです。 また、x ^ x == 0。したがって、数値が XOR 合計に偶数回出現すると、それ自体が打ち消されます。 奇数回出現する数字のみを考慮する必要があります。

nums1 の各数値は XOR 合計で n 回出現し、nums2 の各数値は m 回出現します。 各数値のビットを反復処理し、各ビットが設定された合計回数をカウントできます。ビットの合計数が奇数の場合、最終的な XOR 結果に影響します。

提供されている PHP コードは、このアプローチを効率的に実装しています。 nums1nums2 を 1 回繰り返すため、時間計算量は O(m n) です。一定量の追加スペースを使用するため、スペースの複雑さは O(1) です。

以上がすべてのペアリングのビットごとの XORの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート