1380. Lucky Numbers in a Matrix
Posted wentiliangkaihua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1380. Lucky Numbers in a Matrix相关的知识,希望对你有一定的参考价值。
Given a m * n
matrix of distinct numbers, return all lucky numbers in the matrix in any order.
A lucky number is an element of the matrix such that it is the minimum element in its row and maximum in its column.
Example 1:
Input: matrix = [[3,7,8],[9,11,13],[15,16,17]] Output: [15] Explanation: 15 is the only lucky number since it is the minimum in its row and the maximum in its column
Example 2:
Input: matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]] Output: [12] Explanation: 12 is the only lucky number since it is the minimum in its row and the maximum in its column.
Example 3:
Input: matrix = [[7,8],[1,2]] Output: [7]
Constraints:
m == mat.length
n == mat[i].length
1 <= n, m <= 50
1 <= matrix[i][j] <= 10^5
.- All elements in the matrix are distinct.
public List<Integer> luckyNumbers (int[][] matrix) { int m = matrix.length, n = matrix[0].length; int[] mi = new int[m], mx = new int[n]; Arrays.fill(mi, Integer.MAX_VALUE); for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { mi[i] = Math.min(matrix[i][j], mi[i]); mx[j] = Math.max(matrix[i][j], mx[j]); } } List<Integer> res = new ArrayList<>(); for (int i = 0; i < m; ++i) for (int j = 0; j < n; ++j) if (mi[i] == mx[j]) res.add(mi[i]); return res; }
lucky number: 既是每行最小的数,也是每列最大的数
设置两个数组存放每行最小,和每列最大的数
比较,两者必须相等才是一个可能的解,加入list中
以上是关于1380. Lucky Numbers in a Matrix的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_easy_array1380. Lucky Numbers in a Matrix