關於 2D 座標 About 2D Coordinate
- 2023.08.15
- Coordinate Programming Techniques / Tools Python
Naming
- grid is a m × n matrix
m := len(grid)
n := len(grid[0])
$$ grid = \left|
\begin{aligned}
& a_{0, 0} & \quad & a_{0, 1} & \quad & a_{0, 2} & \quad & … & \quad & a_{0, n} \\
& a_{1, 0} & \quad & a_{1, 1} & \quad & a_{1, 2} & \quad & … & \quad & a_{1, n} \\
& … & \quad & … & \quad & … & \quad & … & \quad & … \\
& a_{m, 0} & \quad & a_{m, 1} & \quad & a_{m, 2} & \quad & … & \quad & a_{m, n} \\
\end{aligned}
\right| $$
- rowi := [grid[i][j] for j = 0, 1, 2, …, n] ≡ [ai, j for j = 0, 1, 2, …, n]
collumj := [grid[i][j] for i = 0, 1, 2, …, m] ≡ [ai, j for i = 0, 1, 2, …, m] - grid[i][j] ≡ grid[y][x] ≡ grid[r][c]
- previous, current, next_ (nr, nc)
- DIRection (dr, dc)
確認座標合法性
Python
0 <= i/y/r < m
0 <= j/x/c < n
移動
for dr, dc in DIR: nr, nc = r, c while 0 <= nr + dr < m and \ 0 <= nc + dc < n """and another_condition""": nr, nc = nr + dr, nc + dc # ...
用 2 個變數存取 1 維陣列
for i in range(len(lst)):
// do something with lst[i]
⇒for i in range(width):
for j in range(height):
// do something with lst[j * width + i]
經典例題
- Leetcode # 542. 01 Matrix(計算每一個 cell 到 0 的最近距離)
Last Updated on 2023/08/22 by A1go