...
Code Block |
---|
|
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 |
---|
|
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
} |
...