zl程序教程

您现在的位置是:首页 >  其他

当前栏目

每日一题---1380. 矩阵中的幸运数[力扣][Go]

2023-03-14 23:00:14 时间

题目:

给你一个 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
}

image