Skip to content

Commit d548f61

Browse files
solves lucky numbers in a matrix
1 parent 609a35e commit d548f61

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@
351351
| 1365 | [How Many Numbers Are Smaller Than Current Number](https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number) | [![Java](assets/java.png)](src/HowManyNumbersAreSmallerThanCurrentNumber.java) | |
352352
| 1370 | [Increasing Decreasing String](https://leetcode.com/problems/increasing-decreasing-string) | [![Java](assets/java.png)](src/IncreasingDecreasingString.java) | |
353353
| 1374 | [Generate A String With Characters That Have Odd Count](https://leetcode.com/problems/generate-a-string-with-characters-that-have-odd-counts) | [![Java](assets/java.png)](src/GenerateAStringWithCharactersThatHaveOddCounts.java) | |
354-
| 1380 | [Lucky Numbers In A Matrix](https://leetcode.com/problems/lucky-numbers-in-a-matrix) | | |
354+
| 1380 | [Lucky Numbers In A Matrix](https://leetcode.com/problems/lucky-numbers-in-a-matrix) | [![Java](assets/java.png)](src/LuckyNumbersInAMatrix.java) | |
355355
| 1385 | [Find The Distance Value Between 2 Arrays](https://leetcode.com/problems/find-the-distance-value-between-two-arrays) | | |
356356
| 1389 | [Create Target Array in Given Order](https://leetcode.com/problems/create-target-array-in-the-given-order) | | |
357357
| 1394 | [Find Lucky Integer In An Array](https://leetcode.com/problems/find-lucky-integer-in-an-array) | | |

src/LuckyNumbersInAMatrix.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
public class LuckyNumbersInAMatrix {
5+
public List<Integer> luckyNumbers (int[][] matrix) {
6+
final int rows = matrix.length, columns = matrix[0].length;
7+
final List<Integer> luckyNumbers = new ArrayList<>();
8+
int[] columnMax = getMaxOfColumns(matrix);
9+
for (int row = 0 ; row < rows ; row++) {
10+
RowMin rowMin = RowMin.from(matrix[row]);
11+
if (rowMin.min == columnMax[rowMin.index]) {
12+
luckyNumbers.add(rowMin.min);
13+
}
14+
}
15+
return luckyNumbers;
16+
}
17+
18+
private static final class RowMin {
19+
private final int index;
20+
private final int min;
21+
22+
private RowMin(int index, int min) {
23+
this.index = index;
24+
this.min = min;
25+
}
26+
27+
private static RowMin from(int[] row) {
28+
int minIndex = 0, min = row[0];
29+
for (int i = 1; i < row.length; i++) {
30+
if (row[i] < min) {
31+
minIndex = i;
32+
min = row[i];
33+
}
34+
}
35+
return new RowMin(minIndex, min);
36+
}
37+
}
38+
39+
private int[] getMaxOfColumns(int[][] grid) {
40+
final int rows = grid.length, columns = grid[0].length;
41+
final int[] columnsMax = new int[columns];
42+
for (int[] row : grid) {
43+
for (int column = 0 ; column < columns ; column++) {
44+
columnsMax[column] = Math.max(columnsMax[column], row[column]);
45+
}
46+
}
47+
return columnsMax;
48+
}
49+
}

0 commit comments

Comments
 (0)