-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path3989.cpp
More file actions
37 lines (36 loc) · 1.12 KB
/
Copy path3989.cpp
File metadata and controls
37 lines (36 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
public:
int findMaxPath(int node, vector<vector<int>>& graph, vector<int>& memo) {
if (memo[node] != -1) return memo[node];
int val = 1;
for (auto& neighbor : graph[node]) {
val = max(val, findMaxPath(neighbor, graph, memo) + 1);
}
return memo[node] = val;
}
int maxConsistentColumns(vector<vector<int>>& grid, int limit) {
int m = grid.size();
int n = grid[0].size();
vector<vector<int>> graph(n);
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
bool flag = true;
for (int k = 0; k < m; ++k) {
if (abs(grid[k][j] - grid[k][i]) > limit) {
flag = false;
break;
}
}
if (flag) {
graph[i].push_back(j);
}
}
}
int res = 1;
vector<int> memo(n, -1);
for (int i = 0; i < n; ++i) {
res = max(res, findMaxPath(i, graph, memo));
}
return res;
}
};