Re: [閒聊] 每日leetcode

看板Marginalman作者 (enmeitiryous)時間1年前 (2024/09/04 09:37), 編輯推噓1(101)
留言2則, 2人參與, 1年前最新討論串803/1548 (看更多)
題目: 874 walking robot simulation 一個機器人起始在(0,0)並面向+y的方向,給你一串指令 commands,當coomands[i]=-1代 表向右轉,-2代表向左轉,否則代表朝面向方向走的距離,給你一個blockers座標vector 如果機器人的下一步存在該列表中則機器人原地停下,求在過程中最大的x**2+y**2 思路: 照做,先把blockers塞到一個set,每一次移動時看下一步是不是在blockers中,並記錄 每一次移動完x**2+y**2需不需要更新 int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) { int curx=0; int cury=0; int ans=0; set<vector<int>> blockers; for(auto h: obstacles){ blockers.insert(h); } vector<vector<int>> godir={{0,1},{1,0},{0,-1},{-1,0}}; int nowdir=0; for(auto j:commands){ if(j==-1){ nowdir=(nowdir+1)%4; } else if(j==-2){ nowdir=(nowdir+3)%4; } else{ for(int i=0;i<j;++i){ curx+=godir[nowdir][0]; cury+=godir[nowdir][1]; if(blockers.count({curx,cury})){ curx-=godir[nowdir][0]; cury-=godir[nowdir][1]; break; } } ans=max(curx*curx+cury*cury,ans); } } return ans; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.201.58 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1725413856.A.F64.html

09/04 09:38, 1年前 , 1F
大師
09/04 09:38, 1F

09/04 10:55, 1年前 , 2F
大師
09/04 10:55, 2F
文章代碼(AID): #1crxdWza (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1crxdWza (Marginalman)