Problem Statement
leetcode problem link
Brute Force approach [Accepted]
class Solution:
def sortMatrix(self, grid: List[List[int]]) -> List[List[int]]:
ROWS = len(grid)
COLS = len(grid[0])
for row in range(ROWS):
r, c = row, 0
arr = []
while r < ROWS and c < COLS:
arr.append(grid[r][c])
r += 1
c += 1
arr.sort()
r, c = row, 0
i = 0
while r < ROWS and c < COLS:
grid[r][c] = arr.pop()
r += 1
c += 1
for col in range(1, COLS):
r, c = 0, col
arr = []
while r < ROWS and c < COLS:
arr.append(grid[r][c])
r += 1
c += 1
arr.sort()
r, c = 0, col
i = 0
while r < ROWS and c < COLS:
grid[r][c] = arr.pop(0)
r += 1
c += 1
return grid
Editorial
Approach: Simulation
class Solution:
def sortMatrix(self, grid: List[List[int]]) -> List[List[int]]:
n = len(grid)
for i in range(n):
tmp = [grid[i + j][j] for j in range(n - i)]
tmp.sort(reverse=True)
for j in range(n - i):
grid[i + j][j] = tmp[j]
for j in range(1, n):
tmp = [grid[i][j + i] for i in range(n - j)]
tmp.sort()
for i in range(n - j):
grid[i][j + i] = tmp[i]
return grid