国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

每日一題(set集合)-874. 模擬行走機器人

這篇具有很好參考價值的文章主要介紹了每日一題(set集合)-874. 模擬行走機器人。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目

874. 模擬行走機器人文章來源地址http://www.zghlxwxcb.cn/news/detail-642858.html

題解思路

  • 初始方向朝y軸正方向,遇到指令command == -1 則向右轉(zhuǎn), 若為 -2 則向左轉(zhuǎn)

  1. 定義方向[-1,0]、[0,1]、[1,0]、[0,-1] 分別為朝x軸負(fù)方向, y軸正方向, x軸正方向,y軸負(fù)方向
  2. 初始方向為[0,1], 若向右轉(zhuǎn) 則方向變?yōu)閇-1,0]、若向左轉(zhuǎn)方向變?yōu)閇1,0]。
  3. 若向右轉(zhuǎn)則不斷 向右遞加, 向左轉(zhuǎn)則向左遞減
  4. 同時建立集合set 存儲有障礙的點。(set集合查詢時間復(fù)雜度為o(1))

代碼

C++

class Solution {
public:
    int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {
        int dirs[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
        int sx = 0, sy = 0, res = 0, d = 1;
        set<pair<int, int>> mp;
        for(int i = 0; i < obstacles.size(); ++i){
            pair<int, int> t(obstacles[i][0], obstacles[i][1]);
            mp.insert(t);
        }
        for (int c : commands){
            if (c < 0){
                d += c == -1 ? 1 : -1;
                d %= 4;
                if (d < 0){
                    d += 4;
                }
            }else{
                for (int i = 0; i < c; ++i){
                    int nx = sx + dirs[d][0];
                    int ny = sy + dirs[d][1];
                    pair<int, int> t(nx, ny);
                    if (mp.count(t)){
                        break;
                    }
                    res = max(res, nx * nx + ny * ny);
                    sx = nx;
                    sy = ny;
                }
            }
            
        } 
        return res;
    }
};

Python

class Solution:
    def robotSim(self, commands: List[int], obstacles: List[List[int]]) -> int:
        dirs = [[-1, 0], [0, 1], [1, 0], [0, -1]]
        sx, sy = 0, 0
        d = 1
        res = 0
        mp = set([tuple(i) for i in obstacles])
        for c in commands:
            if c < 0:
                d += 1 if c == -1 else -1
                d %= 4
            else:
                for i in range(c):
                    if tuple([sx + dirs[d][0], sy + dirs[d][1]]) in mp:
                        break
                    else:
                        sx += dirs[d][0]
                        sy += dirs[d][1]
                        res = max(res, sx*sx + sy * sy)
        return res 

到了這里,關(guān)于每日一題(set集合)-874. 模擬行走機器人的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ?LeetCode解法匯總874. 模擬行走機器人

    https://github.com/September26/java-algorithms 機器人在一個無限大小的 XY 網(wǎng)格平面上行走,從點? (0, 0) ?處開始出發(fā),面向北方。該機器人可以接收以下三種類型的命令? commands ?: -2 ?:向左轉(zhuǎn)? 90 ?度 -1 ?:向右轉(zhuǎn)? 90 ?度 1 = x = 9 ?:向前移動? x ?個單位長度 在網(wǎng)格上有一些格子

    2024年02月11日
    瀏覽(30)
  • 1041.困于環(huán)中的機器人 && 874.模擬行走的機器人 && 模擬行走的機器人 2 (三道機器人的模擬題)

    對于直接行走類的題,我們都可以用 int[][] dirs = new int[][]{{0,1}, {-1,0}, {0,-1}, {1,0}}; 來表示向 北 西 南 東 走一步 可以 int x = 0, y = 0, d = 0 xy 表示坐標(biāo),d表示方向,要和上面表示的方向?qū)?yīng) 由于是對應(yīng)的 d = 0 表示北 d = 1 表示西 d = 2 表示南 d = 3 表示東 即逆時針一圈 左轉(zhuǎn): d =

    2024年02月16日
    瀏覽(30)
  • 【算法-數(shù)組-pyhton】模擬行走機器人

    【算法-數(shù)組-pyhton】模擬行走機器人

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月12日
    瀏覽(19)
  • 每日一題(822. 翻轉(zhuǎn)卡片游戲)-集合set

    822. 翻轉(zhuǎn)卡片游戲 簡述為:找到桌面卡片中 不重復(fù)的最小值,卡片可以來回反轉(zhuǎn) 如果 卡片前面后面的數(shù)字相同 則拋棄不用 在剩下的卡片中 找到最小值(前后可以反轉(zhuǎn) == 卡片不分前后)

    2024年02月14日
    瀏覽(27)
  • 【LeetCode 算法】Walking Robot Simulation 模擬行走機器人 - 二分

    機器人在一個無限大小的 XY 網(wǎng)格平面上行走,從點 (0, 0) 處開始出發(fā),面向北方。該機器人可以接收以下三種類型的命令 commands : -2 :向左轉(zhuǎn) 90 度 -1 :向右轉(zhuǎn) 90 度 1 = x = 9 1 = x = 9 1 = x = 9 :向前移動 x 個單位長度 在網(wǎng)格上有一些格子被視為障礙物 obstacles 。第 i 個障礙物位

    2024年02月11日
    瀏覽(21)
  • 【LeetCode 算法】Walking Robot Simulation 模擬行走機器人 - 哈希

    機器人在一個無限大小的 XY 網(wǎng)格平面上行走,從點 (0, 0) 處開始出發(fā),面向北方。該機器人可以接收以下三種類型的命令 commands : -2 :向左轉(zhuǎn) 90 度 -1 :向右轉(zhuǎn) 90 度 1 = x = 9 1 = x = 9 1 = x = 9 :向前移動 x 個單位長度 在網(wǎng)格上有一些格子被視為障礙物 obstacles 。第 i 個障礙物位

    2024年02月15日
    瀏覽(24)
  • 【經(jīng)典LeetCode算法題目專欄分類】【第5期】貪心算法:分發(fā)餅干、跳躍游戲、模擬行走機器人

    【經(jīng)典LeetCode算法題目專欄分類】【第5期】貪心算法:分發(fā)餅干、跳躍游戲、模擬行走機器人

    《博主簡介》 小伙伴們好,我是阿旭。專注于人工智能AI、python、計算機視覺相關(guān)分享研究。 ? 更多學(xué)習(xí)資源,可關(guān)注公-仲-hao:【阿旭算法與機器學(xué)習(xí)】,共同學(xué)習(xí)交流~ ?? 感謝小伙伴 們點贊、關(guān)注! class ? Solution : ???? def ? findContentChildren ( self , ?g : ?List [ int ], ?s

    2024年02月04日
    瀏覽(29)
  • 【每日一題】657. 機器人能否返回原點

    657. 機器人能否返回原點 - 力扣(LeetCode) 在二維平面上,有一個機器人從原點? (0, 0) ?開始。給出它的移動順序,判斷這個機器人在完成移動后是否在 ? (0, 0) ?處結(jié)束 。 移動順序由字符串? moves ?表示。字符? move[i] ?表示其第? i ?次移動。機器人的有效動作有? R (右)

    2024年02月09日
    瀏覽(27)
  • 【每日一題】1041. 困于環(huán)中的機器人

    【每日一題】1041. 困于環(huán)中的機器人

    1041. 困于環(huán)中的機器人 - 力扣(LeetCode) 在無限的平面上,機器人最初位于? (0, 0) ?處,面朝北方。注意: 北方向 ?是y軸的正方向。 南方向 ?是y軸的負(fù)方向。 東方向 ?是x軸的正方向。 西方向 ?是x軸的負(fù)方向。 機器人可以接受下列三條指令之一: \\\"G\\\" :直走 1 個單位 \\\"L\\\" :

    2024年02月09日
    瀏覽(23)
  • Leetcode-每日一題【劍指 Offer 13. 機器人的運動范圍】

    Leetcode-每日一題【劍指 Offer 13. 機器人的運動范圍】

    地上有一個m行n列的方格,從坐標(biāo)? [0,0] ?到坐標(biāo)? [m-1,n-1] ?。一個機器人從坐標(biāo)? [0, 0] 的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行坐標(biāo)和列坐標(biāo)的數(shù)位之和大于k的格子。例如,當(dāng)k為18時,機器人能夠進入方格 [35, 37] ,因為

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包