ETH官方钱包

前往
大廳
主題

LeetCode - 2120. Execution of All Suffix Instructions Staying in a Grid 解題心得

Not In My Back Yard | 2024-08-19 12:00:18 | 巴幣 0 | 人氣 21

題目連結:


題目意譯:
現在有一個 n × n 的網格,其左上角格子位於 (0, 0) 而右下角的格子則位於 (n - 1, n - 1)。你被給定一整數 n 以及一整數陣列 startPos,其中 startPos = [startrow, startcol] 代表著有一個機器人一開始位在格子 (startrow, startcol)。

你同時也被給定一個索引值從 0 開始數且長度為 m 的字串 s,其中 s[i] 為給機器人的第 i 個指令:'L'(向左移動)、'R'(向右移動)、'U'(向上移動)以及 'D'(向下移動)。

該機器人可以從任意 s[i] 開始(含)往後面執行。其將會往 s 的尾端依序執行各個指令,但是在以下條件之一滿足時,該機器人將會停止:
    下一個指令即將把機器人移出網格;
    沒有剩下的指令可以執行。

回傳一個長度為 m 的陣列 answer,其中 answer[i] 為如果機器人從 s[i] 開始往後執行指令,其可以執行的指令總數。

限制:
m == s.length
1 ≦ n, m ≦ 500
startPos.length == 2
0 ≦ startrow, startcol < n
s 由 'L' 、 'R' 、 'U' 和 'D' 組成。



範例測資:
範例 1:
輸入: n = 3, startPos = [0,1], s = "RRDDLU"
輸出: [1,5,4,3,1,0]
解釋: Starting from startPos and beginning execution from the ith instruction:
- 第 0: "RRDDLU"。直到將會移出網格為止,只有一個指令 "R" 會被執行。
- 第 1:  "RDDLU"。五個指令會全數執行,並停在 (1, 1) 這個位置。
- 第 2:   "DDLU"。四個指令會全數執行,並停在 (1, 0) 這個位置。
- 第 3:    "DLU"。三個指令會全數執行,並停在 (0, 1) 這個位置。
- 第 4:     "LU"。直到將會移出網格為止,只有一個指令 "L" 會被執行。
- 第 5:      "U"。如果往上移動,則機器人將會移出網格。

範例 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]
解釋: 無論從哪一個指令開始,機器人都會移出網格。


解題思維:
因為 m 最大只有 500,因此直接以每一個 s[i] 作為起點模擬並紀錄機器人的位置即可。時間複雜度為 O(m ^ 2)。

降到 O(m) 是可行的,只是這部份就交給讀者思考。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作