1460. Make Two Arrays Equal by Reversing Sub-arrays
Description
Given two integer arrays of equal length target and arr.
In one step, you can select any non-empty sub-array 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:
1- Reverse sub-array [2,4,1], arr becomes [1,4,2,3]
2- Reverse sub-array [4,2], arr becomes [1,2,4,3]
3- Reverse sub-array [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:
Example 4:
Constraints:
target.length == arr.length1 <= target.length <= 10001 <= target[i] <= 10001 <= arr[i] <= 1000
Tags
Array
Solution
Essentially, this problem is equivalent to check if both arrays share the same elements.
Solution 1:
Sort both arrays and check each pair of values.
Solution 2:
We can use a hash table to check if there is an element that only appears once. Return false if so.
Complexity
Solution 1:
Time complexity:
Space complexity: , which is equivalent to the space complexity of quick sort algorithm.
Solution 2:
Time complexity:
Space complexity: , as the range of element is given.
Code
Solution 1:
Solution 2:
Last updated
Was this helpful?