機械人在乙個無限大小的網格上行走,從點 (0, 0) 處開始出發,面向北方。該機械人可以接收以下三種型別的命令:
在網格上有一些格仔被視為障礙物。
第i
個障礙物位於網格點(obstacles[i][0], obstacles[i][1])
如果機械人試圖走到障礙物上方,那麼它將停留在障礙物的前乙個網格方塊上,但仍然可以繼續該路線的其餘部分。
返回從原點到機械人的最大歐式距離的平方。
示例 1:
輸入:commands = [4,-1,3], obstacles =輸出:25解釋:機械人將會到達 (3, 4)示例 2:
輸入:commands = [4,-1,4,-2,4], obstacles = [[2,4]]輸出:65解釋: 機械人在左轉走到 (1, 8) 之前將被困在 (1, 4) 處
0 <= commands.length <= 10000
0 <= obstacles.length <= 10000
-30000 <= obstacle[i][0] <= 30000
-30000 <= obstacle[i][1] <= 30000
答案保證小於2 ^ 31
我一開始的想法是用乙個二維陣列儲存所有路障的位置,但是當解法寫出來之後發現記憶體爆了,於是看了一下題解,發現可以直接用乙個set儲存所有的路障的位置(x左移16位+y),向某乙個位置走的時候,檢測該點在set中是否有對應的座標即可。
在這裡貼出標準解法
class solution ;
int dy = new int;
int x = 0, y = 0, di = 0;
// encode obstacles (x, y) as (x+30000) * (2^16) + (y+30000)
setobstacleset = new hashset();
for (int obstacle: obstacles)
int ans = 0;
for (int cmd: commands) }}
}return ans;
}}
Leetcode 874 模擬行走機械人
如果機械人試圖走到障礙物上方,那麼它將停留在障礙物的前乙個網格方塊上,但仍然可以繼續該路線的其餘部分。返回從原點到機械人的最大歐式距離的平方。示例 1 輸入 commands 4,1,3 obstacles 輸出 25解釋 機械人將會到達 3,4 示例 2 輸入 commands 4,1,4,2,4...
leetcode 874 模擬行走機械人
機械人在乙個無限大小的網格上行走,從點 0,0 處開始出發,面向北方。該機械人可以接收以下三種型別的命令 在網格上有一些格仔被視為障礙物。第i個障礙物位於網格點 obstacles i 0 obstacles i 1 如果機械人試圖走到障礙物上方,那麼它將停留在障礙物的前乙個網格方塊上,但仍然可以繼...
LeetCode874 模擬行走機械人
機械人在乙個無限大小的網格上行走,從點 0,0 處開始出發,面向北方。該機械人可以接收以下三種型別的命令 2 向左轉 90 度 1 向右轉 90 度 1 x 9 向前移動 x 個單位長度在網格上有一些格仔被視為障礙物。第 i 個障礙物位於網格點 obstacles i 0 obstacles i 1...