题目:
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
幸运数是指矩阵中满足同时下列两个条件的元素:
在同一行的所有元素中最小
在同一列的所有元素中最大
解题代码:
func luckyNumbers (matrix [][]int) []int {
sum := []int{}
// 记录每行最小值
m1 := make(map[int]int)
for i, ints := range matrix {
min := ints[0]
for _, n := range ints {
if min > n {
min = n
}
}
m1[i] = min
}
// 记录每列最大值
m2 := make(map[int]int)
for i := 0; i < len(matrix[0]); i++ {
max := matrix[0][i]
for j := 0; j < len(matrix); j++ {
if max < matrix[j][i] {
max = matrix[j][i]
}
}
m2[i] = max
}
// 最后一次遍历找出符合的数字
for i, ints := range matrix {
for i2, i3 := range ints {
if i3 == m1[i] && i3 == m2[i2]{
sum = append(sum, i3)
break
}
}
}
return sum
}