Leetcode 1329. Sort the Matrix Diagonally
题目链接: Sort the Matrix Diagonally
难度:Medium
题目大意:
将二维矩阵各条对角线上的元素按升序进行排列。
思路:
将各条对角线上元素分别用优先队列来存储,然后对各条对角线上元素进行排序。
代码
class Solution {//参考高赞回答
public int[][] diagonalSort(int[][] mat) {
int m=mat.length,n=mat[0].length;
HashMap<Integer, PriorityQueue<Integer>> map=new HashMap<>();
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
map.putIfAbsent(i-j,new PriorityQueue<>());
map.get(i-j).add(mat[i][j]);
}//每条对角线上的元素用一个优先队列来存储
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
mat[i][j]=map.get(i-j).poll();
}
}//遍历一遍数组,依次对角线对应的弹出优先队列中最小的元素
return mat;
}
}