生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1222. 可以攻击国王的皇后(set)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 題目
在一個(gè) 8x8 的棋盤上,放置著若干「黑皇后」和一個(gè)「白國(guó)王」。
「黑皇后」在棋盤上的位置分布用整數(shù)坐標(biāo)數(shù)組 queens 表示,「白國(guó)王」的坐標(biāo)用數(shù)組 king 表示。
「黑皇后」的行棋規(guī)定是:橫、直、斜都可以走,步數(shù)不受限制,但是,不能越子行棋。
請(qǐng)你返回可以直接攻擊到「白國(guó)王」的所有「黑皇后」的坐標(biāo)(任意順序)。
示例 1:
輸入:queens
= [[0,1],[1,0],[4,0],[0,4],[3,3],[2,4]],
king
= [0,0]
輸出:
[[0,1],[1,0],[3,3]]
解釋:
[0,1] 的皇后可以攻擊到國(guó)王,因?yàn)樗麄冊(cè)谕恍猩稀?
[1,0] 的皇后可以攻擊到國(guó)王,因?yàn)樗麄冊(cè)谕涣猩稀?
[3,3] 的皇后可以攻擊到國(guó)王,因?yàn)樗麄冊(cè)谕粭l對(duì)角線上。
[0,4] 的皇后無(wú)法攻擊到國(guó)王,因?yàn)樗晃挥?
[0,1] 的皇后擋住了。
[4,0] 的皇后無(wú)法攻擊到國(guó)王,因?yàn)樗晃挥?
[1,0] 的皇后擋住了。
[2,4] 的皇后無(wú)法攻擊到國(guó)王,因?yàn)樗蛧?guó)王不在同一行
/列
/對(duì)角線上。
示例 2:
輸入:queens
= [[0,0],[1,1],[2,2],[3,4],[3,5],[4,4],[4,5]],
king
= [3,3]
輸出:
[[2,2],[3,4],[4,4]]
示例 3:
輸入:queens
= [[5,6],[7,7],[2,1],[0,7],[1,6],[5,1],[3,7],[0,3],[4,0],[1,2],[6,3],[5,0],[0,4],[2,2],[1,1],[6,4],[5,4],[0,0],[2,6],[4,5],[5,2],[1,4],[7,5],[2,3],[0,5],[4,2],[1,0],[2,7],[0,1],[4,6],[6,1],[0,6],[4,3],[1,7]], king
= [3,4]
輸出:
[[2,3],[1,4],[1,6],[3,7],[4,3],[5,4],[4,5]]
提示:
1 <= queens
.length
<= 63
queens
[0].length
== 2
0 <= queens
[i
][j
] < 8
king
.length
== 2
0 <= king
[0], king
[1] < 8
一個(gè)棋盤格上最多只能放置一枚棋子。
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/queens-that-can-attack-the-king
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
- 遍歷8個(gè)方向,從king開(kāi)始走,遇到皇后或者邊界,break,查找下一個(gè)方向
class Solution {
public:vector
<vector
<int>> queensAttacktheKing(vector
<vector
<int>>& queens
, vector
<int>& king
) {vector
<vector
<int>> dir
= {{1,0},{0,1},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};int i
,j
,k
;set
<pair
<int,int>> s
;vector
<vector
<int>> pos
;for(i
= 0; i
< queens
.size(); i
++)s
.insert(make_pair(queens
[i
][0], queens
[i
][1]));for(k
= 0; k
< dir
.size(); ++k
){i
= king
[0];j
= king
[1];while(1){i
+= dir
[k
][0];j
+= dir
[k
][1];if(!(i
>=0 && i
<8 && j
>=0 && j
<8))break;else{if(s
.count(make_pair(i
,j
))){ pos
.push_back({i
,j
});break;}}}}return pos
;}
};
12 ms 9.5 MB
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1222. 可以攻击国王的皇后(set)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。