日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

    歡迎訪問(wèn) 生活随笔!

    生活随笔

    當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

    编程问答

    LeetCode 1222. 可以攻击国王的皇后(set)

    發(fā)布時(shí)間:2024/7/5 编程问答 32 豆豆
    生活随笔 收集整理的這篇文章主要介紹了 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)//8個(gè)方向{i = king[0];j = king[1];//起點(diǎn)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))){ //在界內(nèi),找到皇后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ò),歡迎將生活随笔推薦給好友。