Amee2000
Junior Member
Swift:
class Solution {
func spiralMatrix(_ m: Int, _ n: Int, _ head: ListNode?) -> [[Int]] {
let r = Array(repeating:-1, count:n)
var result = Array(repeating:r, count:m)
var row = 0
var col = 0
var head = head
var padding = 0 // 0 top, 1: right, 2: bottom, 3: left
var idx = 0
var maxCol = 0
var minCol = 0
var maxRow = 0
var minRow = 0
func calBorder() {
maxCol = n - idx - 1
maxRow = m - idx - 1
minCol = idx
minRow = 1 + idx
}
calBorder()
while head != nil {
result[row][col] = head!.val
head = head!.next
if padding == 0 {
col += 1
if col > maxCol {
col = maxCol
row += 1
padding = 1
}
} else if padding == 1 {
row += 1
if row > maxRow {
row = maxRow
col -= 1
padding = 2
}
} else if padding == 2 {
col -= 1
if col < minCol {
col = minCol
row -= 1
padding = 3
}
} else {
row -= 1
if row < minRow {
row = minRow
col += 1
padding = 0
idx += 1
calBorder()
}
}
}
return result
}
}


nma có vẻ ko ai hỏi thế đâu -_-


dạo này implement dfs nhiều quá mới quen tay làm direction v, 10 daily thì hết 5 câu dfs r