g1301_1400.s1380_lucky_numbers_in_a_matrix.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1301_1400.s1380_lucky_numbers_in_a_matrix;
// #Easy #Array #Matrix #2022_03_22_Time_2_ms_(82.40%)_Space_42.8_MB_(85.37%)
import java.util.ArrayList;
import java.util.List;
/**
* 1380 - Lucky Numbers in a Matrix\.
*
* Easy
*
* Given an `m x 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]
*
* **Explanation:** 7 is the only lucky number since it is the minimum in its row and the maximum in its column.
*
* **Constraints:**
*
* * `m == mat.length`
* * `n == mat[i].length`
* * `1 <= n, m <= 50`
* * 1 <= matrix[i][j] <= 105
.
* * All elements in the matrix are distinct.
**/
public class Solution {
public List luckyNumbers(int[][] matrix) {
List mini = new ArrayList<>();
List maxi = new ArrayList<>();
for (int[] arr : matrix) {
int min = Integer.MAX_VALUE;
for (int j : arr) {
if (min > j) {
min = j;
}
}
mini.add(min);
}
int cols = matrix[0].length;
for (int c = 0; c < cols; ++c) {
int max = Integer.MIN_VALUE;
for (int[] ints : matrix) {
if (ints[c] > max) {
max = ints[c];
}
}
maxi.add(max);
}
List res = new ArrayList<>();
for (int value : mini) {
if (maxi.contains(value)) {
res.add(value);
}
}
return res;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy