1329. Sort the Matrix Diagonally

描述:

image.png

解题思路:直接取对角线元素排序完在放回相应的位置即可
代码:

class Solution {
public:
    vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
        map<int, vector<int>>mapj;
        map<int, vector<int>>mapi;
        for(int j = 0; j < mat[0].size(); j++) {
            vector<int> tmp;
            int i = 0, k = j;
            while(i < mat.size() && k < mat[0].size()) {
                tmp.push_back(mat[i][k]);
                i++;
                k++;
            }
            mapj[j] = tmp;
        }
        for(int i = 0; i < mat.size(); i++) {
            vector<int> tmp;
            int j = 0, k = i;
            while(k < mat.size() && j < mat[0].size()) {
                tmp.push_back(mat[k][j]);
                j++;
                k++;
            }
            mapi[i] = tmp;
        }
        map<int, vector<int>>::iterator iterj = mapj.begin();
        while(iterj != mapj.end()) {
            sort(iterj->second.begin(), iterj->second.end());
            int l = 0, r = iterj -> first;
            for (int i = 0; i < iterj->second.size(); i++) {
                mat[l++][r++] = iterj->second[i];
            }
            iterj++;
        }
        map<int, vector<int>>::iterator iteri = mapi.begin();
        while(iteri != mapi.end()) {
            sort(iteri->second.begin(), iteri->second.end());
            int r = 0, l = iteri -> first;
            for (int i = 0; i < iteri->second.size(); i++) {
                mat[l++][r++] = iteri->second[i];
            }
            iteri++;
        }
        return mat;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 排序算法基础 排序算法,是一种能将一串数据按照特定的排序方式进行排列的一种算法,一个排序算法的好坏,主要从时间复杂...
    jackyshan阅读 9,612评论 3 11
  • 当我们,发善心行善事,福报已经在来的路上了。你只管努力,一切随之而来 总业绩66760.总定金56 今日业绩0
    2914c64c98dc阅读 832评论 0 1
  • 自以为好颓丧,她不是个活泼开朗的人。而且像个傻子一样的,从不会争口气。也许就是有个梦,向往温馨家园充满阳光的窗户。...
    乐贵真趣阅读 36评论 0 0
  • 钱钟书的围城中,方鸿渐应该是一个主角。他国文不错,又懂得点哲学,但还是玩世不龚,多情而软弱,特别是在处理和女人的关...
    星星之火w阅读 4,251评论 0 1
  • 1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)? 古典问题:有一对兔...
    坐等抱大腿的鬼鬼阅读 431评论 0 0