package com.fishercoder.solutions;

import java.util.ArrayList;
import java.util.List;

/**
 * 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 class _1380 {
    public static class Solution1 {
        public List<Integer> luckyNumbers(int[][] matrix) {
            List<Integer> result = new ArrayList<>();
            for (int i = 0; i < matrix.length; i++) {
                for (int j = 0; j < matrix[0].length; j++) {
                    if (luckyInRow(matrix[i][j], matrix[i])) {
                        if (luckyInColumn(matrix[i][j], matrix, j)) {
                            result.add(matrix[i][j]);
                        }
                    }
                }
            }
            return result;
        }

        private boolean luckyInColumn(int number, int[][] matrix, int columnIndex) {
            for (int i = 0; i < matrix.length; i++) {
                if (number < matrix[i][columnIndex]) {
                    return false;
                }
            }
            return true;
        }

        private boolean luckyInRow(int number, int[] row) {
            for (int num : row) {
                if (number > num) {
                    return false;
                }
            }
            return true;
        }
    }
}

@@ -85,883 +85,8 @@
 t;%0A%0A
-/**%0A * 1380. Lucky Numbers in a Matrix%0A *%0A * Given a m * n matrix of distinct numbers, return all lucky numbers in the matrix in any order.%0A * A lucky number is an element of the matrix such that it is the minimum element in its row and maximum in its column.%0A *%0A * Example 1:%0A * Input: matrix = %5B%5B3,7,8%5D,%5B9,11,13%5D,%5B15,16,17%5D%5D%0A * Output: %5B15%5D%0A * Explanation: 15 is the only lucky number since it is the minimum in its row and the maximum in its column%0A *%0A * Example 2:%0A * Input: matrix = %5B%5B1,10,4,2%5D,%5B9,3,8,7%5D,%5B15,16,17,12%5D%5D%0A * Output: %5B12%5D%0A * Explanation: 12 is the only lucky number since it is the minimum in its row and the maximum in its column.%0A *%0A * Example 3:%0A * Input: matrix = %5B%5B7,8%5D,%5B1,2%5D%5D%0A * Output: %5B7%5D%0A *%0A * Constraints:%0A * m == mat.length%0A * n == mat%5Bi%5D.length%0A * 1 %3C= n, m %3C= 50%0A * 1 %3C= matrix%5Bi%5D%5Bj%5D %3C= 10%5E5.%0A * All elements in the matrix are distinct.%0A * */%0A
 publ

refactor 1380