1. 问题描述
给你两个长度相同的整数数组 target 和 arr 。每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。
如果你能让 arr 变得与 target 相同,返回 True;否则,返回 False 。
2. 解题思路
维护一个数组 count
用于计数,其下标即为数组 target
和 arr
中元素的值。
3. 代码实现
class Solution {
public boolean canBeEqual(int[] target, int[] arr) {
int[] count = new int[1001];
for (int i = 0; i < target.length; i++) {
count[target[i]]++;
}
for (int i = 0; i < arr.length; i++) {
if (--count[arr[i]] < 0) {
return false;
}
}
return true;
}
}