题目描述
给一个二维数组nums,对于每一个元素nums[i],找出距离最近的且值相等的元素,输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出-1。
输入描述
输入第一行为二维数组的行
输入第二行为二维数组的列
输入的数字以空格隔开。
输出描述
数组形式返回所有坐标值。
// 解题思路为:将相同值的点存在一个list中,list放在map中,遍历数组,遍历list,找到最小值
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = Integer.parseInt(in.nextLine());
int m = Integer.parseInt(in.nextLine());
Map<Integer, List<int[]>> map = new HashMap<>();
int[][] nums = new int[n][m];
// 初始化map数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
nums[i][j] = in.nextInt();
List<int[]> orDefault = map.getOrDefault(nums[i][j], new ArrayList<>());