Get Biggest Three Rhombus Sums in a Grid LeetCode solution in C++

1
class Solution {
2
public:
3
vector<int> getBiggestThree(vector<vector<int>> &grid) {
4
int n = grid.size(), m = grid[0].size();
5
set<int> s;
6

7
// 1x1, 3x3, 5x5
8
for (int len = 1; len <= min(m, n); len += 2) {
9
for (int i = 0; i + len <= n; i++) {
10
for (int j = 0; j + len <= m; j++) {
11
int d = len / 2;
12
if (d == 0) {
13
s.insert(grid[i][j]);
14
} else {
15
int x = i, y = j + d;
16
long long sum = 0;
17
for (int k = 0; k < d; k++) sum += grid[x++][y++];
18
for (int k = 0; k < d; k++) sum += grid[x++][y--];
19
for (int k = 0; k < d; k++) sum += grid[x--][y--];
20
for (int k = 0; k < d; k++) sum += grid[x--][y++];
21
s.insert(sum);
22
}
23
}
24
}
25
}
26

27
if (s.size() < 3) return vector<int>(s.rbegin(), s.rend());
28

29
return vector<int>(s.rbegin(), next(s.rbegin(), 3));
30
}
31
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0