前往
大廳
主題

LeetCode - 657. Robot Return to Origin 解題心得

Not In My Back Yard | 2020-12-13 00:00:07 | 巴幣 0 | 人氣 182

題目連結:


題目意譯:
有一個機器人,一開始在位置 (0, 0),即座標平面上的原點。給定其移動之序列,判斷該機器人經過這些移動之後有沒有回到 (0, 0) 上。

移動序列以一個字串表示,moves[i] 字元表示第 i 個移動。合法移動為 R (右) 、 L (左) 、 U (上) 和 D (下)。如果機會人完成移動之後回到了原點,回傳真(true);反之,回傳假(false)。

注:機器人的面向方向完全無關緊要。「R」保證機器人會往座標平面的右方移動一次、「L」保證機器人會往座標平面的左方移動一次,以此類推。此外,假設每次移動的步伐大小皆相同。

限制:
1 ≦ moves.length ≦ 2 × 10 ^ 4
moves 字串只包含 'U' 、 'D' 、 'L' 和 'R' 之字元。



範例測資:
範例 1:
輸入: moves = "UD"
輸出: true
解釋: 機器人往上移動一次、往下一次。所有移動步伐大小皆相同,所以它回到了一開始的所在地。因此,我們回傳真。

範例 2:
輸入: moves = "LL"
輸出: false
解釋: 機器人往左移了兩次。最後落在原點左方兩「步」的距離。我們回傳假,因為結尾在的點不是原點。

範例 3:
輸入: moves = "RRDD"
輸出: false

範例 4:
輸入: moves = "LDRRLRUULR"
輸出: false


解題思維:
就是單純地模擬機器人的移動即可。令兩變數 X 、 Y 一開始都為 0 (代表一開始在原點)。

然後碰到 R 就將 X 加 1 、 L 就 X 減 1 、 U 就將 Y 加 1 、 D 就 Y 減 1 。最後看 X 、 Y 是否皆為 0 ,如果是就是回到了原點;反之則沒有。




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

創作回應

相關創作

更多創作