华为OD机考2025A卷 - 找数字/找等值元素(Java & Python& JS & C++ & C )

最新华为OD机试

真题目录:点击查看目录
华为OD面试真题精选:点击立即查看

题目描述

给一个二维数组 nums,对于每一个元素 nums[i],找出距离最近的且值相等的元素,

输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出-1。

输入描述

输入第一行为二维数组的行

输入第二行为二维数组的列

输入的数字以空格隔开。

备注
  • 针对数组 nums[i][j],满足 0 < i ≤ 100,0 < j ≤ 100
  • 对于每个数字,最多存在 100 个与其相等的数字

输出描述

数组形式返回所有坐标值。

示例1

输入

3
5
0 3 5 4 2
2 5 7 8 3
2 5 4 2 4

输出

[[-1, 4, 2, 3, 3], [1, 1, -1, -1, 4], [1, 1, 2, 3, 2]]

说明

解题思路

题目描述:

给定一个二维数组 nums,对于数组中的每个元素 nums[i][j],需要找到距离最近的、与其值相等的另一个元素 nums[x][y],并计算这两个元素之间的“曼哈顿距离”(即横纵坐标差值的绝对值之和)。
如果找不到其他等值的元素,则返回 -1

用例解释:
输入:
3
5
0 3 5 4 2
2 5 7 8 3
2 5 4 2 4
  1. 输入格式解释

    • 第一行表示二维数组有 3 行。
    • 第二行表示二维数组有 5 列。
    • 接下来的 3 行是具体的二维数组内容:
      0 3 5 4 2
      2 5 7 8 3
      2 5 4 2 4
      
  2. 输出格式解释

    • 输出的结果为一个二维数组,格式如下:
      [[-1, 4, 2, 3, 3], [1, 1, -1, -1, 4], [1, 1, 2, 3, 2]]
      
计算步骤:
  • 对于每个元素,计算与其值相等的其他元素的曼哈顿距离,选择最小的距离。
    • 示例计算
      • 对于 nums[0][0] = 0,没有其他值为 0 的元素,因此输出 -1
      • 对于 nums[0][1] = 3,最近的等值元素是 nums[1][4],距离为 |0-1| + |1-4| = 4
      • 对于 nums[0][2] 

你可能感兴趣的:(最新华为OD机试真题,华为OD机试真题,(Java/JS/Py/C),华为od,c++,java,javascript,python)