// 找數(shù)字
func HW2023024() {
// 測試用例
// n = 3
// m = 5
// strings = [["0","3","5","4","2"], ["2","5","7","8","3"], ["2","5","4","2","4"]]
// 開始代碼
n = Int(readLine()!)!
m = Int(readLine()!)!
while let line = readLine() {
let num = line.components(separatedBy: " ")
if num.count > 0 {
strings.append(num)
}
}
// mapDic: 將數(shù)字和坐標(biāo)轉(zhuǎn)化為字典 key: 輸入的數(shù)字字符串 value: 輸入的數(shù)字坐標(biāo)
var mapDic: [String: [[Int]]] = [:]
for i in 0..<n {
for j in 0..<m {
let input = strings[i][j]
var tempList: [[Int]] = []
tempList = mapDic.keys.contains(input) ? mapDic[input]! : []
tempList.append([i,j])
mapDic.updateValue(tempList, forKey: input)
}
}
var resList: [String] = [] // 結(jié)果串
for i in 0..<n {
var list: [String] = []
for j in 0..<m {
let input = strings[i][j]
let tempList: [[Int]] = mapDic[input] ?? []
if tempList.count == 1 { // 只有一個坐標(biāo)不存在相等值
list.append("-1")
continue
}
var minValue = Int.max // 最小距離
for num in tempList {
let distance = abs(num[0]-i) + abs(num[1]-j)
if distance == 0 { // 距離為零則跳過
continue
}
minValue = min(minValue, distance)
}
list.append(String(minValue))
}
resList.append("[\(list.joined(separator: ","))]")
}
print("[\(resList.joined(separator: ","))]")
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。