给你两个长度相同的整数数组
target
和arr
。 每一步中,你可以选择arr
的任意 非空子数组 并将它翻转。你可以执行此过程任意次。 如果你能让arr
变得与target
相同,返回 True;否则,返回 False 。
和遍历操作,时间复杂度为
,所以整体时间复杂度为
.
public boolean canBeEqual(int[] target, int[] arr) {
// 两数组元素个数都不同,不可能通过翻转相等
if (arr.length != target.length){
return false;
}
// 将两个数组排序
Arrays.sort(target);
Arrays.sort(arr);
// 将排序后的数组进行比较,一旦有不同的元素,则说明不能通过翻转相等
for (int i = 0; i < target.length; i++) {
if (arr[i]!=target[i]){
return false;
}
}
return true;
}