生活随笔
收集整理的這篇文章主要介紹了
LeetCode 2120. 执行所有后缀指令(模拟)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
1. 題目
現(xiàn)有一個(gè) n x n 大小的網(wǎng)格,左上角單元格坐標(biāo) (0, 0) ,右下角單元格坐標(biāo) (n - 1, n - 1) 。 給你整數(shù) n 和一個(gè)整數(shù)數(shù)組 startPos ,其中 startPos = [startrow, startcol] 表示機(jī)器人最開始在坐標(biāo)為 (startrow, startcol) 的單元格上。
另給你一個(gè)長度為 m 、下標(biāo)從 0 開始的字符串 s ,其中 s[i] 是對機(jī)器人的第 i 條指令:'L'(向左移動(dòng)),'R'(向右移動(dòng)),'U'(向上移動(dòng))和 'D'(向下移動(dòng))。
機(jī)器人可以從 s 中的任一第 i 條指令開始執(zhí)行。 它將會(huì)逐條執(zhí)行指令直到 s 的末尾,但在滿足下述條件之一時(shí),機(jī)器人將會(huì)停止 :
下一條指令將會(huì)導(dǎo)致機(jī)器人移動(dòng)到網(wǎng)格外 。 沒有指令可以執(zhí)行。
返回一個(gè)長度為 m 的數(shù)組 answer ,其中 answer[i] 是機(jī)器人從第 i 條指令 開始 ,可以執(zhí)行的 指令數(shù)目 。
示例 1:
輸入:n
= 3 , startPos
= [ 0 , 1 ] , s
= "RRDDLU"
輸出:
[ 1 , 5 , 4 , 3 , 1 , 0 ]
解釋:機(jī)器人從 startPos 出發(fā),并從第 i 條指令開始執(zhí)行:
- 0 : "RRDDLU" 在移動(dòng)到網(wǎng)格外之前,只能執(zhí)行一條
"R" 指令。
- 1 : "RDDLU" 可以執(zhí)行全部五條指令,機(jī)器人仍在網(wǎng)格內(nèi),最終到達(dá)
( 0 , 0 ) 。
- 2 : "DDLU" 可以執(zhí)行全部四條指令,機(jī)器人仍在網(wǎng)格內(nèi),最終到達(dá)
( 0 , 0 ) 。
- 3 : "DLU" 可以執(zhí)行全部三條指令,機(jī)器人仍在網(wǎng)格內(nèi),最終到達(dá)
( 0 , 0 ) 。
- 4 : "LU" 在移動(dòng)到網(wǎng)格外之前,只能執(zhí)行一條
"L" 指令。
- 5 : "U" 如果向上移動(dòng),將會(huì)移動(dòng)到網(wǎng)格外。
示例 2:
輸入:n
= 2 , startPos
= [ 1 , 1 ] , s
= "LURD"
輸出:
[ 4 , 1 , 0 , 0 ]
解釋:
- 0 : "LURD"
- 1 : "URD"
- 2 : "RD"
- 3 : "D"
示例 3:
輸入:n
= 1 , startPos
= [ 0 , 0 ] , s
= "LRUD"
輸出:
[ 0 , 0 , 0 , 0 ]
解釋:無論機(jī)器人從哪條指令開始執(zhí)行,都會(huì)移動(dòng)到網(wǎng)格外。提示:
m
== s
. length
1 <= n
, m
<= 500
startPos
. length
== 2
0 <= startrow
, startcol
< n
s 由
'L' 、
'R' 、
'U' 和
'D' 組成
來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/execution-of-all-suffix-instructions-staying-in-a-grid 著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
class Solution {
public : vector
< int > executeInstructions ( int n
, vector
< int > & startPos
, string s
) { int x
= startPos
[ 0 ] , y
= startPos
[ 1 ] , len
= s
. size ( ) ; vector
< int > ans ( len
, 0 ) ; for ( int i
= 0 , j
; i
< len
; ++ i
) { x
= startPos
[ 1 ] , y
= startPos
[ 0 ] ; j
= i
; for ( ; j
< len
; ++ j
) { if ( s
[ j
] == 'L' ) -- x
; else if ( s
[ j
] == 'R' ) ++ x
; else if ( s
[ j
] == 'U' ) -- y
; else if ( s
[ j
] == 'D' ) ++ y
; if ( x
< 0 || x
>= n
|| y
< 0 || y
>= n
) break ; } ans
[ i
] = j
- i
; } return ans
; }
} ;
24 ms 9.9 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔 為你收集整理的LeetCode 2120. 执行所有后缀指令(模拟) 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。