華為OD機(jī)試-找等值元素
給一個(gè)二維數(shù)組nums,對(duì)于每一個(gè)元素num[i],找出距離最近的且值相等的元素,輸出橫縱坐標(biāo)差值的絕對(duì)值之和,如果沒有等值元素,則輸出-1。
例如:
輸入數(shù)組nums為
0 3 5 4 2
2 5 7 8 3
2 5 4 2 4
對(duì)于 num[0][0] = 0,不存在相等的值。
對(duì)于 num[0][1] = 3,存在一個(gè)相等的值,最近的坐標(biāo)為num[1][4],最小距離為4.
對(duì)于 num[0][2] = 5,存在兩個(gè)相等的值,最近的坐標(biāo)為num[1][1],故最小距離為2.
對(duì)于 num[1][1] = 5,存在兩個(gè)相等的值,最近的坐標(biāo)為num[2][1],故最小距離為1。
故輸出為
-1 4 2 3 3
1 1 -1 -1 4
1 1 2 3 2
輸入描述:
輸入第一行為二維數(shù)組的行,輸入第二行為二維數(shù)組的列輸入的數(shù)字以空格隔開。
輸出描述:
數(shù)組形式返回所有坐標(biāo)值。
補(bǔ)充說明:
1.針對(duì)數(shù)組num[i][j],滿足0<i<=100: 0<i<=100.
2.對(duì)于每個(gè)數(shù)字,最多存在100個(gè)與其相等的數(shù)字
示例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]]
解題思路:
1.將二維數(shù)組中的值和坐標(biāo)轉(zhuǎn)化為map對(duì)象.
2.遍歷二維數(shù)組中的值,找出其值的所有坐標(biāo),求出其中距離最短的值
————————————————
版權(quán)聲明:本文為CSDN博主「MISAYAONE」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://renjie.blog.csdn.net/article/details/128442197
Java 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/128442197
Python實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/128442480
C++ 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/128442500
JavaScript實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/129030814
C語言版本持續(xù)更新中