leetcode 874 模擬行走機械人

2021-09-10 23:09:16 字數 1328 閱讀 2378

機械人在乙個無限大小的網格上行走,從點 (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) 處
這道題,被劃分為貪心演算法的範疇,其實我感覺跟貪心演算法的關心真的不大,只是有個提前結束的條件,這就算是貪心演算法,真的太過分了。

這道題的難點主要有兩個,乙個是方向的問題,乙個是怎麼處理機械人運動到障礙物上的情況。

另外,為了加快執行速度,需要將障礙物的資訊放入set中,如果使用陣列或者列表,那麼速度將會變得非常慢。

class solution 

public int robotsim(int commands, int obstacles)

int index = ;

int direction_table = , , , }; // 0表示y正半軸,1表示x正半軸,2表示y負半軸,3表示x負半軸

int direction_int = 0;

int direction = direction_table[direction_int];

int distance_max = 0;

for( int command : commands )

else if(command == -2)

direction = direction_table[direction_int];

}else}}

if( distance_max < distance(index) )

}return distance_max;

}}

四. 引用

leetcode:

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...