All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g1301_1400.s1380_lucky_numbers_in_a_matrix.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
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