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;         
    }
};