最新华为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
-
输入格式解释:
- 第一行表示二维数组有
3行。 - 第二行表示二维数组有
5列。 - 接下来的
3行是具体的二维数组内容: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[0][0] = 0,没有其他值为0的元素,因此输出-1。 - 对于
nums[0][1] = 3,最近的等值元素是nums[1][4],距离为|0-1| + |1-4| = 4。 - 对于
nums[0][2] = 5
- 对于
- 示例计算:

订阅专栏 解锁全文
6188

被折叠的 条评论
为什么被折叠?



