leetcode 1030. Matrix Cells in Distance Order
题意:给你一个矩阵的长宽,再给你一个点的坐标,把矩阵中的每个点按距离这个点的距离排序。
思路:用结构体保存坐标和距离,再排序。
struct node
{
int x;
int y;
int dis;
};
bool cmp(node a, node b)
{
if (a.dis == b.dis)
{
if (a.x == b.x)
return a.y < b.y;
return a.x < b.x;
}
return a.dis < b.dis;
}
class Solution {
public:
vector<vector<int>> allCellsDistOrder(int R, int C, int r0, int c0) {
vector<node> a;
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
node x;
x.x = i;
x.y = j;
x.dis = abs(r0 - i) + abs(c0 - j);
a.push_back(x);
}
}
sort(a.begin(), a.end(), cmp);
vector<vector<int>> ans;
for (int i = 0; i < a.size(); i++)
{
vector<int> tmp;
tmp.push_back(a[i].x);
tmp.push_back(a[i].y);
ans.push_back(tmp);
}
return ans;
}
};