/** 1329.将矩阵按对角线排序
* @author 作者 Your-Name:
* @version 创建时间:2020年2月20日 上午9:29:03
* 给你一个 m * n 的整数矩阵 mat ,请你将同一条对角线上的元素(从左上到右下)按升序排序后,返回排好序的矩阵。
示例 1:
输入:mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]
输出:[[1,1,1,1],[1,2,2,2],[1,2,3,3]]
*/
public class 将矩阵按对角线排序 {
public static void main(String[] args)
{
int[][] mat = {{3,3,1,1},{2,2,1,2},{1,1,1,2}};
diagonalSort(mat);
}
public static int[][] diagonalSort(int[][] mat) {
int m = mat.length;
int n = mat[0].length;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(i>0&&j>0)
continue;
List<Integer> list = new ArrayList<>();
int a=i,b=j;
while(a<m&&b<n)
{
list.add(mat[a][b]);
a++;
b++;
}
Collections.sort(list);
a = i;
b = j;
int index=0;
while(a<m&&b<n)
{
mat[a][b] = list.get(index++);
a++;
b++;
}
}
}
return mat;
}
}