Get Biggest Three Rhombus Sums in a Grid

 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
class Solution:
    def getBiggestThree(self, grid: List[List[int]]) -> List[int]:
        s = set()
        m, n = len(grid), len(grid[0])
        for i in range(m):
            for j in range(n):
                for sz in range(0, min(i + 1, m - i, (n - j + 1) // 2)):
                    x, y = i, j
                    r_sum = 0
                    if sz == 0:
                        r_sum = grid[i][j]
                    else:
                        # Up-right
                        for k in range(sz):
                            r_sum += grid[x][y]
                            x -= 1
                            y += 1
                        # Down-right
                        for k in range(sz):
                            r_sum += grid[x][y]
                            x += 1
                            y += 1
                        # Down-left
                        for k in range(sz):
                            r_sum += grid[x][y]
                            x += 1
                            y -= 1
                        # Up-left
                        for k in range(sz):
                            r_sum += grid[x][y]
                            x -= 1
                            y -= 1
                    s.add(r_sum)
        return sorted(s, reverse=True)[:3]