思路:
1、通过任意次子数组的翻转,实际上可以可以任意排列arr数组,所以只要两个数组元素完全一致即可;【时间复杂度O(n),n是数组长度。用时:1ms,】
class Solution {
public boolean canBeEqual(int[] target, int[] arr) {
int [] num = new int[1001];
if (target.length != arr.length){
return false;
}
for (int i = 0; i < target.length ; i++) {
num[target[i]]++;
num[arr[i]]--;
}
for (int i:num){
if (i!=0) return false;
}
return true;
}
}
2、利用HashMap实现对两个数组元素的检查【时间复杂度O(n),n是数组长度。用时:6ms】
class Solution {
public boolean canBeEqual(int[] target, int[] arr) {
Map<Integer,Integer> map = new HashMap<>();
for(int i : arr){
map.put(i,map.getOrDefault(i,0)+1);//统计arr中每个元素i出现的次数
}
for(int i : target){
int count = map.getOrDefault(i,0);//获得次数
if(count == 0){
return false;
}
map.put(i,count-1);
}
return true;
}
}