首頁  >  文章  >  後端開發  >  。螺旋矩陣 III

。螺旋矩陣 III

王林
王林原創
2024-08-09 09:18:51689瀏覽

885。螺旋矩陣 III

主題:陣列、矩陣、模擬

您從面向東的行 x 列網格的儲存格 (rStart, cStart) 開始。西北角位於網格的第一行第一列,東南角位於最後一行第一列。

您將沿著順時針螺旋形狀行走,參觀該網格中的每個位置。每當您移出網格邊界時,我們都會繼續在網格外行走(但稍後可能會返回網格邊界。)。最終,我們到達網格的所有行 * 列空間。

傳回代表網格位置的座標數組,按照您存取網格的順序

範例1:

. Spiral Matrix III

  • 輸入:行= 1,列= 4,rStart = 0,cStart = 0
  • 輸出: [[0,0],[0,1],[0,2],[0,3]]

範例2:

. Spiral Matrix III

  • 輸入:行= 5,列= 6,rStart = 1,cStart = 4
  • 輸出: [[1,4],[1,5],[2,5],[2,4],[2,3],[1,3],[0,3] ,[0,4],[0,5],[3,5],[3,4],[3,3],[3,2],[2,2],[1,2],[ 0,2],[4,5],[4,4],[4,3],[4,2],[4,1],[3,1],[2,1],[1, 1],[0,1],[4,0],[3,0],[2,0],[1,0],[0,0]]

約束:

  • 1
  • 0
  • 0

解:

要解決這個問題,我們可以按照以下步驟操作:

  1. 方向數組:使用方向數組促進正確順序移動(東→南→西→北)。每個方向都會有對應的行索引和列索引的變更。
  2. 步數管理:您需要控制每個方向要走多少步。最初,您向東移動 1 步,然後向南移動 1 步,向西移動 2 步,向北移動 2 步,依此類推。
  3. 邊界檢查:確保每次移動後,檢查新位置是否在網格邊界內。如果是,則將其新增至結果陣列。
  4. 停止條件:訪問完所有行*列位置後停止循環。

讓我們用 PHP 實作這個解:885。螺旋矩陣 III

<?php
// Example Usage:
print_r(spiralMatrixIII(1, 4, 0, 0)); // [[0,0],[0,1],[0,2],[0,3]]
print_r(spiralMatrixIII(5, 6, 1, 4)); // [[1,4],[1,5],[2,5],[2,4], ...]
?>

解釋:

  1. 方向:方向數組保存向東、向南、向西、向北移動的行和列的變化。
  2. 運動:我們從(rStart,cStart)開始,按照螺旋圖案的方向移動。
  3. 邊界檢查:僅將位於網格內的位置加入結果。
  4. 步數控制:stepCount 管理轉彎前在目前方向上走了多少步。兩圈後增加。
  5. 終止:循環繼續,直到訪問完網格中的所有位置。

這種方法確保我們按照所需的螺旋順序存取網格中的每個單元格。

聯絡連結

如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

  • 領英
  • GitHub

以上是。螺旋矩陣 III的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn