get到的新知识点
- vector定义二维数组
- vector<vector<int>>rec(R*C,vector<int>(3))//定义一个vector变量rec,总共包含R*C个vector变量,rec由很多个vector变量组成,每一个vector大小是3,前两个存放坐标,第三个存放曼哈顿距离,相当于一个二维数组,[[0,0,1],[0,0,2]]
- sort条件排序
- sort(begin,end,cmp)
- cmp是排序机制,默认是升序排列,可以自己编写cmp函数
- static bool function(vector<int> &a,vector<int> &b)//排序函数
{
return a[2]<b[2];
}
思路
- 计算出曼哈顿距离存放在vector变量的第三个位置中,然后利用sort函数排序,自己写出排序条件,条件是按照vector变量中第三个数升序排列
代码
-
1 class Solution { 2 public: 3 vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) { 4 vector<vector<int>>rec(R*C,vector<int>(3)); 5 int num=0; 6 for(int i=0;i<R;i++){ 7 for(int j=0;j<C;j++){ 8 rec[num][0]=i; 9 rec[num][1]=j; 10 rec[num][2]=abs(r0-i)+abs(c0-j); 11 num++; 12 } 13 } 14 15 sort(rec.begin(),rec.end(),function); 16 for(int i=0;i<rec.size();i++){//最后要把距离值删掉,输出点 17 rec[i].pop_back(); 18 } 19 return rec; 20 } 21 static bool function(vector<int> &a,vector<int> &b)//排序函数 22 { 23 return a[2]<b[2]; 24 } 25 };
到这里排序的简单题就做完啦!!