1 minute read

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