874。行走機器人模擬
難度:中
主題:陣列、雜湊表、模擬
無限 XY 平面上的機器人從點 (0, 0) 開始,面向北。機器人可以接收這三種可能類型的命令的序列:
- -2:左轉90度。
- -1:右轉90度。
- 1
有些網格方塊是障礙物。第 i 個障礙物位於網格點障礙物[i] = (xi, yi)。如果機器人遇到障礙物,那麼它會留在目前位置並繼續執行下一個命令。
返回機器人從原點得到的最大歐氏距離平方(即若距離為5,則回傳25)。
注意:
- 北意味著+Y方向。
- 東意味著+X方向。
- 南意味著-Y方向。
- 西意味著-X方向。
- [0,0] 內可能有障礙物。
範例1:
- 輸入: 指令 = [4,-1,3],障礙 = []
- 輸出: 25
-
說明:機器人從 (0, 0) 開始:
- 向北移動 4 個單位到 (0, 4)。
- 右轉。
- 向東移動 3 個單位到 (3, 4)。
- 機器人距離原點最遠的點是 (3, 4),其平方為 32 + 42 = 25 個單位。
範例2:
- 輸入: 指令 = [4,-1,4,-2,4],障礙 = [[2,4]]
- 輸出: 65
-
說明:機器人從 (0, 0) 開始:
- 向北移動 4 個單位到 (0, 4)。
- 右轉。
- 向東移動1個單位,被(2, 4)處的障礙物阻擋,機器人位於(1, 4)處。
- 左轉。
- 向北移動 4 個單位到 (1, 8)。
- 機器人距離原點最遠的點是 (1, 8),其平方為 12 + 82 = 65 個單位。
範例 3:
- 輸入: 指令 = [6,-1,-1,6],障礙 = []
- 輸出: 36
- 說明:機器人從 (0, 0) 開始:
- 向北移動 6 個單位到 (0, 6)。
- 右轉。
- 右轉。
- 向南移動 6 個單位到 (0, 0)。
- 機器人距離原點最遠的點是 (0, 6),其平方為 62 = 36 個單位。
約束:
- 1 4
- 指令[i] 是 -2、-1 或 [1, 9] 範圍內的整數。
- 0 4
- -3 * 104 i, yi 4 4 答案保證小於2
解:
我們需要根據一系列命令在無限二維網格上模擬機器人的運動,並避開障礙物(如果有)。目標是確定機器人從原點到達的最大歐氏距離平方。
-
方法
- 方向處理
- :
-
- 機器人可以面向四個方向之一:北、東、南、西。
- 我們可以將這些方向表示為向量:
- 北:(0, 1)
- 東:(1, 0)
- 南:(0, -1)
西:(-1, 0)
-
- 轉向
- :
- 左轉(-2)會將方向逆時針旋轉 90 度。
右轉 (-1) 會將方向順時針旋轉 90 度。 -
- 運動
- :
對於每個移動指令,機器人都會朝當前方向移動,一次移動一個單位。如果遇到障礙物,它會根據該命令停止移動。 -
- 追蹤障礙
- :
將障礙物清單轉換為一組元組以便快速查找,讓機器人快速判斷是否會碰到障礙物。 -
- 距離計算
- :
追蹤機器人在運動過程中到達的距原點平方的最大距離。
讓我們用 PHP 實作這個解決方案:
<?php /** * @param Integer[] $commands * @param Integer[][] $obstacles * @return Integer */ function robotSim($commands, $obstacles) { ... ... ... /** * go to ./solution.php */ } // Test cases echo robotSim([4,-1,3], []) . "\n"; // Output: 25 echo robotSim([4,-1,4,-2,4], [[2,4]]) . "\n"; // Output: 65 echo robotSim([6,-1,-1,6], []) . "\n"; // Output: 36 ?>
解釋:
- 方向管理:我們使用向量列表來表示方向,可以輕鬆計算移動後的下一個位置。
- 障礙物偵測:透過將障礙物儲存在集合中,我們實現了 O(1) 時間複雜度來檢查某個位置是否被障礙物阻擋。
- 距離計算:我們不斷更新機器人移動時到達的最大平方距離。
測試用例
- 提供的範例測試案例用於驗證解決方案:
- [4,-1,3] 沒有障礙物應回傳 25。
- [4,-1,4,-2,4] 有障礙物 [[2,4]] 應回傳 65。
- [6,-1,-1,6] 沒有障礙物應回傳 36。
該解決方案有效地處理了問題約束並根據需要計算最大距離平方。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
- 領英
- GitHub
以上是。行走機器人模擬的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP中使用clone關鍵字創建對象副本,並通過\_\_clone魔法方法定制克隆行為。 1.使用clone關鍵字進行淺拷貝,克隆對象的屬性但不克隆對象屬性內的對象。 2.通過\_\_clone方法可以深拷貝嵌套對象,避免淺拷貝問題。 3.注意避免克隆中的循環引用和性能問題,優化克隆操作以提高效率。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器