class Solution {
public:
void func(int x, int y, vector<vector<int>>& mat){
int row = mat.size();
int col = mat[0].size();
// sort in res
int xx = x;
int yy = y;
vector<int> res;
while(xx>=0&&xx<=row-1&&yy>=0&&yy<=col-1){
res.push_back(mat[xx][yy]);
xx ++;
yy ++;
}
sort(res.begin(),res.end());
// push into mat
int resindex = 0;
//cout<<x<<" "<<y<<endl;
while(x>=0&&x<=row-1&&y>=0&&y<=col-1){
//cout<<res[resindex]<<endl;
mat[x][y] = res[resindex++];
x ++;
y ++;
}
return;
}
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
int row = mat.size();
int col = mat[0].size();
// (i,j)=>(i+1,j+1);
// define start (0, col-1) , (0, 0), (1,0), (row-1,0)
for(int j = col-1;j>=0;j--){
func(0, j, mat);
}
for(int i = 1;i<=row-1;i++){
func(i,0, mat);
}
return mat;
}
};
1329. Sort the Matrix Diagonally
最新推荐文章于 2020-12-24 10:52:33 发布