首頁 >後端開發 >php教程 >透過反轉子數組使兩個數組相等

透過反轉子數組使兩個數組相等

王林
王林原創
2024-08-05 19:35:49968瀏覽

Make Two Arrays Equal by Reversing Subarrays

1460。透過反轉子數組使兩個數組相等

簡單

給你兩個長度相等的整數陣列 target 和 arr。一步中,您可以選擇 arr 的任何非空子數組 並將其反轉。您可以執行任意數量的步驟。

如果可以讓 arr 等於 target,則回傳 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.length == arr.length
  • 1
  • 1
  • 1

提示:

  1. target的每個元素在arr中都應該有對應的元素,如果沒有對應的元素,則傳回false。
  2. 要輕鬆解決此問題,您可以對兩個陣列進行排序並檢查它們是否相等。

解:

要解決這個問題,我們可以按照以下步驟操作:

  1. 檢查兩個陣列是否具有相同頻率的相同元素。 如果有,則表示可以透過反轉子數組將一個數組轉換為另一個數組。對兩個陣列進行排序並比較它們是實現此目的的簡單方法。

讓我們用 PHP 實作這個解:1460。透過反轉子數組使兩個數組相等

<?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 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

  • 領英
  • GitHub

以上是透過反轉子數組使兩個數組相等的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn