leetcode 874 模擬行走機械人

2021-09-13 13:17:06 字數 1292 閱讀 9146

機械人在乙個無限大小的網格上行走,從點 (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 <= 100000 <= 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...