Queens That Can Attack the King
给一堆国际象棋的queen的坐标, 和一个king的坐标, 问那些queen可以找到king.
主要是看到queen坐标的边界是63, 然后8个方向dfs找即可.
class Solution {
public:
int dirs[8][2] = {
{1,1},
{1,0},
{1,-1},
{0,1},
{0,-1},
{-1,1},
{-1,0},
{-1,-1}
};
vector<vector<int>> queensAttacktheKing(vector<vector<int>>& queens, vector<int>& king) {
vector<vector<int>> res;
int maxX = 0;
int maxY = 0;
set<pair<int, int>> qs;
for(auto q : queens){
maxX = max(maxX, q[0]);
maxY = max(maxY, q[1]);
qs.emplace(pair<int, int>(q[0], q[1]));
}
for(auto d : dirs) {
int kx = king[0];
int ky = king[1];
while(kx >= 0 && ky >= 0 && kx <= 63 && ky <= 63){
kx += d[0];
ky += d[1];
if(qs.find(pair<int, int>(kx,ky)) != qs.end()){
vector<int> vv{kx,ky};
res.push_back(vv);
break;
}
}
}
return res;
}
};