엔지니어 게시판
LeetCode 솔루션 분류

[8/28] 1329. Sort the Matrix Diagonally

컨텐츠 정보

본문

Medium
2613202Add to ListShare

matrix diagonal is a diagonal line of cells starting from some cell in either the topmost row or leftmost column and going in the bottom-right direction until reaching the matrix's end. For example, the matrix diagonal starting from mat[2][0], where mat is a 6 x 3 matrix, includes cells mat[2][0]mat[3][1], and mat[4][2].

Given an m x n matrix mat of integers, sort each matrix diagonal in ascending order and return the resulting matrix.

 

Example 1:

Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]
Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]]

Example 2:

Input: mat = [[11,25,66,1,69,7],[23,55,17,45,15,52],[75,31,36,44,58,8],[22,27,33,25,68,4],[84,28,14,11,5,50]]
Output: [[5,17,4,1,52,7],[11,11,25,45,8,69],[14,23,25,44,58,15],[22,27,31,36,50,66],[84,28,75,33,55,68]]

 

Constraints:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n <= 100
  • 1 <= mat[i][j] <= 100
Accepted
124,633
Submissions
149,366

관련자료

댓글 1

학부유학생님의 댓글

  • 익명
  • 작성일
Runtime: 132 ms, faster than 55.66% of Python3 online submissions for Sort the Matrix Diagonally.
Memory Usage: 14.3 MB, less than 76.31% of Python3 online submissions for Sort the Matrix Diagonally.
class Solution:
    def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
        ROW, COL = len(mat), len(mat[0])
        
        # iterate ROWs first
        
        for row in range(ROW):
            self.sortAndReplace(row, 0, mat)
        # iterate COLs
        
        for col in range(1, COL):
            self.sortAndReplace(0, col, mat)
        
        return mat
            
    def sortAndReplace(self, start_row, start_col, mat):
        ROW, COL = len(mat), len(mat[0])
        temp = []
        r,c = start_row, start_col
        
        while r < ROW and c < COL:
            temp.append(mat[r][c])
            r += 1
            c += 1

        temp = sorted(temp, reverse = True)
        
        
        r,c = start_row, start_col
        
        while r < ROW and c < COL:
            mat[r][c] = temp.pop()
            r += 1
            c += 1
전체 404 / 9 페이지
번호
제목
이름

최근글


인기글


새댓글


Stats


  • 현재 접속자 866 명
  • 오늘 방문자 4,451 명
  • 어제 방문자 6,975 명
  • 최대 방문자 14,831 명
  • 전체 회원수 1,536 명
알림 0