package com.算法专练.力扣.通过翻转子数组使两个数组相等;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @author xnl
* @Description:
* @date: 2022/8/24 22:03
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
int[] target = {1,2,3,4}, arr = {2,4,1,3};
System.out.println(solution.canBeEqual(target, arr));
}
/**
* 排序比较
* @param target
* @param arr
* @return
*/
public boolean canBeEqual(int[] target, int[] arr) {
Arrays.sort(target);
Arrays.sort(arr);
return Arrays.equals(target, arr);
}
/**
* 使用hash表记录元素再比较
* @param target
* @param arr
* @return
*/
public boolean canBeEqual2(int[] target, int[] arr) {
Map<Integer, Integer> map = new HashMap<>();
Map<Integer, Integer> map2 = new HashMap<>();
for (int i : target) {
map.put(i, map.getOrDefault(i, 0) + 1);
}
for (int i : arr) {
map2.put(i, map2.getOrDefault(i, 0) + 1);
}
if (map.size() != map2.size()){
return false;
}
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
Integer key = entry.getKey();
Integer value = entry.getValue();
if (!map2.containsKey(key) || !map2.get(key).equals(value)){
return false;
}
}
return true;
}
}
力扣:1460. 通过翻转子数组使两个数组相等
于 2022-08-24 22:22:08 首次发布