ホームページ >バックエンド開発 >PHPチュートリアル >部分配列を反転して 2 つの配列を等しくする

部分配列を反転して 2 つの配列を等しくする

王林
王林オリジナル
2024-08-05 19:35:49968ブラウズ

Make Two Arrays Equal by Reversing Subarrays

1460。部分配列を反転して 2 つの配列を等しくする

簡単

同じ長さの target と arr の 2 つの整数配列が与えられます。 1 つのステップで、arr の任意の 空でない部分配列 を選択し、それを反転できます。任意の数のステップを実行できます。

arr をターゲットと等しくできる場合は true を返し、それ以外の場合は falseを返します。

例 1:

  • 入力: target = [1,2,3,4]、arr = [2,4,1,3]
  • 出力: true
  • 説明: 次の手順に従って、arr を target に変換できます。
    1. 部分配列 [2,4,1] を反転すると、arr は [1,4,2,3] になります
    2. 部分配列 [4,2] を反転すると、arr は [1,2,4,3] になります
    3. 部分配列 [4,3] を反転すると、arr は [1,2,3,4] になります
    4. arr を target に変換するには複数の方法がありますが、これが唯一の方法ではありません。

例 2:

  • 入力: target = [7]、arr = [7]
  • 出力: true
  • 説明: arr は、反転することなく target と等しくなります。

例 3:

  • 入力: target = [3,7,9]、arr = [3,7,11]
  • 出力: false
  • 説明: arr には値 9 がないため、target に変換できません。

制約:

  • target.length == arr.length
  • 1
  • 1
  • 1

ヒント:

  1. target の各要素には、arr に対応する要素が必要です。対応する要素がない場合は false を返します。
  2. これを簡単に解決するには、2 つの配列を並べ替えて、それらが等しいかどうかを確認します。

解決策:

この問題を解決するには、次の手順に従います:

  1. 両方の配列に同じ頻度の同じ要素があるかどうかを確認します。 ある場合は、サブ配列を反転することで一方の配列をもう一方の配列に変換できることを意味します。両方の配列を並べ替えて比較するのが、これを簡単に実現する方法です。

このソリューションを PHP で実装してみましょう: 1460。部分配列を反転して 2 つの配列を等しくする

<?php
function canBeEqual($target, $arr) {
    // Sort both arrays
    sort($target);
    sort($arr);

    // Compare the sorted arrays
    return $target == $arr;
}

// Test cases
$target1 = [1, 2, 3, 4];
$arr1 = [2, 4, 1, 3];
echo canBeEqual($target1, $arr1) ? 'true' : 'false'; // Output: true

$target2 = [7];
$arr2 = [7];
echo canBeEqual($target2, $arr2) ? 'true' : 'false'; // Output: true

$target3 = [3, 7, 9];
$arr3 = [3, 7, 11];
echo canBeEqual($target3, $arr3) ? 'true' : 'false'; // Output: false
?>

説明:

  1. 配列の並べ替え: target と arr の両方を並べ替えることで、それらが同じ頻度で同じ要素を持つ場合、並べ替え後にそれらが同一になることを保証できます。
  2. ソートされた配列の比較: target のソートされたバージョンが arr のソートされたバージョンと等しい場合、要素とその頻度が一致するため、部分配列を反転することで arr を target に変換できることを意味します。

重要なポイント:

  • 並べ替え: このステップにより、両方の配列の要素を直接比較できるようになります。
  • 比較: ソート後、部分配列の反転によって両方の配列を等しくできるかどうかを確認するには、直接比較 (==) で十分です。

このソリューションは、PHP の並べ替えと配列の比較のプロパティを活用し、シンプルかつ効率的です。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が部分配列を反転して 2 つの配列を等しくするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。