Leetcode 1329. Sort the Matrix Diagonally(HashMap与PriorityQueue相结合)

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;
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值