赞
踩
矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。例如,矩阵 mat 有 6 行 3 列,从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]、mat[3][1] 和 mat[4][2] 。
给你一个 m * n 的整数矩阵 mat ,请你将同一条 矩阵对角线 上的元素按升序排序后,返回排好序的矩阵。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sort-the-matrix-diagonally
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
〇本题有两种解法,第一种就是先将矩阵中每个左对角线上的元素取出存到vector中,然后排序,最后再存回原来的数组中,最朴素的想法。另一种解法则是妙手。
①妙手的思路是这样的,左对角线上的元素具有这样的性质:位于同一条左对角线上的元素,其i-j
值均相同。 (右对角线上的元素i+j
相同)
② 由①,可以使用哈希,存储矩阵i-j
上的元素,之后再排序,放回原矩阵即可。
class Solution {
public:
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
int n,m;
n = mat.size();
m = mat[0].size();
for(int b=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。