距離順序排列矩陣單元格

class Solution {
public:
    vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
        vector<vector<int>> res(R*C,vector<int>(3));//數組第三個位置存放兩點的曼哈頓距離
        int num=0;
        for(int i=0;i<C;i++)
        {
            for(int j=0;j<R;j++)
            {
                res[num][0]=j;
                res[num][1]=i;
                res[num][2]=abs(r0-j)+abs(c0-i);//曼哈頓距離
                num++;
            }
        }
        sort(res.begin(),res.end(),ismax);//排序
        for(int i=0;i<num;i++)//將曼哈頓距離刪除
        {
            res[i].pop_back();
        }
        return res;
    }
    static bool ismax(vector<int> &a,vector<int> &b)//根據曼哈頓距離升序排序
    {
        return a[2]<b[2];
    }
};

這是LeetCode1030的題 這裏指的學習的地方是將曼哈頓距離放在第三個位置,接着利用sort函數排序,sort函數的最後一個參數表示按所給定的函數的排序方式這是這道題的巧妙的地方 ,最後再將每個曼哈頓距離刪掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章