63
63
64
64
``` python
65
65
class Solution :
66
- def luckyNumbers (self , matrix : List[List[int ]]) -> List[int ]:
67
- row_min = {min (rows ) for rows in matrix}
68
- col_max = {max (cols ) for cols in zip (* matrix)}
69
- return [e for e in row_min if e in col_max]
66
+ def luckyNumbers (self , matrix : List[List[int ]]) -> List[int ]:
67
+ rows = {min (row ) for row in matrix}
68
+ cols = {max (col ) for col in zip (* matrix)}
69
+ return list (rows & cols)
70
70
```
71
71
72
72
### ** Java**
@@ -77,28 +77,93 @@ class Solution:
77
77
class Solution {
78
78
public List<Integer > luckyNumbers (int [][] matrix ) {
79
79
int m = matrix. length, n = matrix[0 ]. length;
80
- Set<Integer > rowMin = new HashSet<> ();
81
- List<Integer > res = new ArrayList<> ();
80
+ int [] rows = new int [m];
81
+ int [] cols = new int [n];
82
+ Arrays . fill(rows, Integer . MAX_VALUE );
82
83
for (int i = 0 ; i < m; ++ i) {
83
- int min = Integer . MAX_VALUE ;
84
84
for (int j = 0 ; j < n; ++ j) {
85
- min = Math . min(min, matrix[i][j]);
85
+ rows[i] = Math . min(rows[i], matrix[i][j]);
86
+ cols[j] = Math . max(cols[j], matrix[i][j]);
86
87
}
87
- rowMin. add(min);
88
88
}
89
-
90
- for (int j = 0 ; j < n; ++ j) {
91
- int max = Integer . MIN_VALUE ;
92
- for (int i = 0 ; i < m; ++ i) {
93
- max = Math . max(max, matrix[i][j]);
89
+ List<Integer > ans = new ArrayList<> ();
90
+ for (int i = 0 ; i < m; ++ i) {
91
+ for (int j = 0 ; j < n; ++ j) {
92
+ if (rows[i] == cols[j]) {
93
+ ans. add(matrix[i][j]);
94
+ }
94
95
}
95
- if (rowMin. contains(max)) {
96
- res. add(max);
96
+ }
97
+ return ans;
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### ** C++**
103
+
104
+ ``` cpp
105
+ class Solution {
106
+ public:
107
+ vector<int > luckyNumbers (vector<vector<int >>& matrix) {
108
+ int m = matrix.size(), n = matrix[ 0] .size();
109
+ vector<int > rows(m, INT_MAX);
110
+ vector<int > cols(n);
111
+ for (int i = 0; i < m; ++i)
112
+ {
113
+ for (int j = 0; j < n; ++j)
114
+ {
115
+ rows[ i] = min(rows[ i] , matrix[ i] [ j ] );
116
+ cols[ j] = max(cols[ j] , matrix[ i] [ j ] );
97
117
}
118
+ }
119
+ vector<int > ans;
120
+ for (int i = 0; i < m; ++i)
121
+ for (int j = 0; j < n; ++j)
122
+ if (rows[ i] == cols[ j] )
123
+ ans.push_back(matrix[ i] [ j ] );
124
+ return ans;
125
+ }
126
+ };
127
+ ```
128
+
129
+ ### **Go**
98
130
131
+ ```go
132
+ func luckyNumbers (matrix [][]int) []int {
133
+ m, n := len(matrix), len(matrix[0])
134
+ rows, cols := make([]int, m), make([]int, n)
135
+ for i := range rows {
136
+ rows[i] = math.MaxInt32
137
+ }
138
+ for i, row := range matrix {
139
+ for j, v := range row {
140
+ rows[i] = min(rows[i], v)
141
+ cols[j] = max(cols[j], v)
142
+ }
143
+ }
144
+ var ans []int
145
+ for i, row := range matrix {
146
+ for j, v := range row {
147
+ if rows[i] == cols[j] {
148
+ ans = append(ans, v)
149
+ }
99
150
}
100
- return res;
101
151
}
152
+ return ans
153
+ }
154
+
155
+ func min(a, b int) int {
156
+ if a < b {
157
+ return a
158
+ }
159
+ return b
160
+ }
161
+
162
+ func max(a, b int) int {
163
+ if a > b {
164
+ return a
165
+ }
166
+ return b
102
167
}
103
168
```
104
169
0 commit comments