1460. Make Two Arrays Equal by Reversing Subarrays
Easy
You are given two integer arrays of equal length target
and arr
. In one step, you can select any non-empty subarray of arr
and reverse it. You are allowed to make any number of steps.
Return true
if you can make arr
equal to target
or false
otherwise.
Example 1:
- Input: target = [1,2,3,4], arr = [2,4,1,3]
- Output: true
-
Explanation: You can follow the next steps to convert arr to target:
- Reverse subarray [2,4,1], arr becomes [1,4,2,3]
- Reverse subarray [4,2], arr becomes [1,2,4,3]
- Reverse subarray [4,3], arr becomes [1,2,3,4]
- There are multiple ways to convert arr to target, this is not the only way to do so.
Example 2:
- Input: target = [7], arr = [7]
- Output: true
- Explanation: arr is equal to target without any reverses.
Example 3:
- Input: target = [3,7,9], arr = [3,7,11]
- Output: false
- Explanation: arr does not have value 9 and it can never be converted to target.
Constraints:
target.length == arr.length
1 <= target.length <= 1000
1 <= target[i] <= 1000
1 <= arr[i] <= 1000
Hint:
- Each element of target should have a corresponding element in arr, and if it doesn't have a corresponding element, return false.
- To solve it easily you can sort the two arrays and check if they are equal.
Solution:
To solve this problem, we can follow these steps:
- Check if both arrays have the same elements with the same frequency. If they do, it means one array can be transformed into the other by reversing subarrays. Sorting both arrays and comparing them is an easy way to achieve this.
Let's implement this solution in PHP: 1460. Make Two Arrays Equal by Reversing Subarrays
<?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
?>
Explanation:
-
Sorting Arrays: By sorting both
target
andarr
, we can ensure that if they have the same elements with the same frequencies, they will become identical after sorting. -
Comparing Sorted Arrays: If the sorted version of
target
is equal to the sorted version ofarr
, it means thatarr
can be transformed intotarget
by reversing subarrays, as the elements and their frequencies match.
Key Points:
- Sorting: This step ensures that we can compare the elements in both arrays directly.
-
Comparison: After sorting, a direct comparison (
==
) is sufficient to check if both arrays can be made equal through subarray reversals.
This solution leverages the properties of sorting and the comparison of arrays in PHP, making it both simple and efficient.
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me: