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:
Input: target = [1,12], arr = [12,1] Output: true
Example 4:
Input: target = [3,7,9], arr = [3,7,11] Output: false Explanation: arr doesn't have value 9 and it can never be converted to target.
Example 5:
Input: target = [1,1,1,1,1], arr = [1,1,1,1,1] Output: true
Constraints:
target.length == arr.length
1 <= target.length <= 1000
1 <= target[i] <= 1000
1 <= arr[i] <= 1000
Solution: Counting
target and arr must have same elements.
Time complexity: O(n)
Space complexity: O(1001)
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Author: Huahua class Solution { public: bool canBeEqual(vector<int>& target, vector<int>& arr) { vector<int> t(1001); vector<int> a(1001); for (int i = 0; i < target.size(); ++i) { ++t[target[i]]; ++a[arr[i]]; } return t == a; } }; |
Python3
1 2 3 4 |
# Author: Huahua class Solution: def canBeEqual(self, target: List[int], arr: List[int]) -> bool: return Counter(target) == Counter(arr) |
请尊重作者的劳动成果,转载请注明出处!花花保留对文章/视频的所有权利。
如果您喜欢这篇文章/视频,欢迎您捐赠花花。
If you like my articles / videos, donations are welcome.
Be First to Comment