2024.4.29力扣每日一题——将矩阵按对角线排序

题目来源

力扣每日一题;题序:1329

我的题解

方法一 模拟

先以第一行的每个元素作为对角线的开始,然后再以第一列的每个元素作为对角线的开始。并在遍历过程中记录(数组或者list)每个对角线上的所有元素,然后进行排序,排序后在进行一次遍历,将值塞入原始矩阵中。

时间复杂度:O(mnlogmn)
空间复杂度:O(mn)

public int[][] diagonalSort(int[][] mat) {
    int n=mat.length;
    int m=mat[0].length;
    //第一行
    for(int i=m-1;i>=0;i--){
        List<Integer> l=new ArrayList<>();
        l.add(mat[0][i]);
        int x=1,y=i+1;
        while(isValid(n,m,x,y)){
            l.add(mat[x][y]);
            x++;
            y++;
        }
        x=1;
        y=i+1;
        int index=0;
        l.sort((a,b)->a-b);
        mat[0][i]=l.get(index++);
        while(isValid(n,m,x,y)){
            mat[x][y]=l.get(index++);
            x++;
            y++;
        }
    }
    //第一列
    for(int i=1;i<n;i++){
        List<Integer> l=new ArrayList<>();
        l.add(mat[i][0]);
        int x=i+1,y=1;
        while(isValid(n,m,x,y)){
            l.add(mat[x][y]);
            x++;
            y++;
        }
        x=i+1;
        y=1;
        int index=0;
        l.sort((a,b)->a-b);
        mat[i][0]=l.get(index++);
        while(isValid(n,m,x,y)){
            mat[x][y]=l.get(index++);
            x++;
            y++;
        }
    }
    return mat;
}

public boolean isValid(int n,int m,int x,int y){
    return x>=0&&x<n&&y>=0&&y<m;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐

  1. 2024.4.29每日——矩阵对角线排序

    2024-04-30 07:58:04       32 阅读
  2. leetcode1329--矩阵对角线排序

    2024-04-30 07:58:04       37 阅读
  3. 1329. 矩阵对角线排序

    2024-04-30 07:58:04       40 阅读
  4. 排序 + 模拟,LeetCode 1329. 矩阵对角线排序

    2024-04-30 07:58:04       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 07:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 07:58:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 07:58:04       82 阅读
  4. Python语言-面向对象

    2024-04-30 07:58:04       91 阅读

热门阅读

  1. Selenium的基本使用

    2024-04-30 07:58:04       30 阅读
  2. 基本排序算法

    2024-04-30 07:58:04       33 阅读
  3. WebRTC中获取当前采集设备的deviceId

    2024-04-30 07:58:04       25 阅读
  4. 【ARM Cache 系列文章 12 – Cache Tag与 物理地址】

    2024-04-30 07:58:04       23 阅读
  5. js ajax初次跨域请求

    2024-04-30 07:58:04       31 阅读
  6. Doris 日志分析案例

    2024-04-30 07:58:04       27 阅读
  7. iOS获取通讯录的方法

    2024-04-30 07:58:04       32 阅读
  8. CSS进阶

    CSS进阶

    2024-04-30 07:58:04      33 阅读
  9. GaussianTalker 学习笔记

    2024-04-30 07:58:04       34 阅读
  10. docker学习笔记1:什么是docker

    2024-04-30 07:58:04       30 阅读