Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published

...

Code Block
languagego
func diagonalSort(mat [][]int) [][]int {
    m, n := len(mat), len(mat[0])
    diagonals := make(map[int][]int, m+n-1)

    for i := range mat {
        for j, v := range mat[i] {
            diagonals[j-i] = append(diagonals[j-i], v)
        }
    }

    for _, v := range diagonals {
        sort.Slice(v, func(i, j int) bool {
            return v[i] >= v[j]
        })
    }

    for i := range mat {
        for j := range mat[i] {
            v := diagonals[j-i][len(diagonals[j-i])-1]
            diagonals[j-i] = diagonals[j-i][:len(diagonals[j-i])-1]
            
            mat[i][j] = v
        }
    }

    return mat
}

LC 1260. Shift 2D Grid 二维网格迁移

https://leetcode.com/problems/shift-2d-grid/

Code Block
languagego
func shiftGrid(grid [][]int, k int) [][]int {
    m, n := len(grid), len(grid[0])

    total := m*n
    all := make([]int, total)

    for i := range grid {
        for j, v := range grid[i] {
            all[(i*n+j+k) % total] = v
        }
    }

    for i := range grid {
        for j := range grid[i] {
            grid[i][j] = all[i*n+j]
        }
    }

    return grid
}

...