列表

详情


1380. 矩阵中的幸运数

给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。

幸运数 是指矩阵中满足同时下列两个条件的元素:

 

示例 1:

输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]
输出:[15]
解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。

示例 2:

输入:matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]
输出:[12]
解释:12 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。

示例 3:

输入:matrix = [[7,8],[1,2]]
输出:[7]
解释:7是唯一的幸运数字,因为它是行中的最小值,列中的最大值。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> luckyNumbers (vector<vector<int>>& matrix) { } };

golang 解法, 执行用时: 20 ms, 内存消耗: 6.5 MB, 提交时间: 2021-06-10 17:52:47

func luckyNumbers (matrix [][]int) (ans []int) {
    r, c := len(matrix), len(matrix[0])
    rMin, cMax := make([]int, r), make([]int, c)
    for i := 0; i < r; i++ {
        rMin[i] = math.MaxInt32
    }
    for i := 0; i < c; i++ {
        cMax[i] = 0
    }

    for i := 0; i < r; i++ {
        for j := 0; j < c; j++ {
            rMin[i] = getMin(rMin[i], matrix[i][j])
            cMax[j] = getMax(cMax[j], matrix[i][j])
        }
    }

    for i := 0; i < r; i++ {
        for j := 0; j < c; j++ {
            if rMin[i] == matrix[i][j] && cMax[j] == matrix[i][j] {
                ans = append(ans, matrix[i][j])
            }
        }
    }
    return ans

}

func getMax(x, y int) int {
	if x > y {
		return x
	}
	return y
}

func getMin(x, y int) int {
	if x > y {
		return y
	}
	return x
}

上一题