Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output:
[1,2,3,6,9,8,7,4,5]
Input: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Output:
[1,2,3,4,8,12,11,10,9,5,6,7]
func spiralOrder(matrix [][]int) []int {
rowEnd := len(matrix) - 1
colEnd := len(matrix[0]) - 1
rowBegin := 0
colBegin := 0
ans := []int{}
for rowBegin <= rowEnd && colBegin <= colEnd {
for i := colBegin; i <= colEnd; i++ {
ans = append(ans, matrix[rowBegin][i])
}
rowBegin++
for i := rowBegin; i <= rowEnd; i++ {
ans = append(ans, matrix[i][colEnd])
}
colEnd--
if rowBegin <= rowEnd {
for i := colEnd; i >= colBegin; i-- {
ans = append(ans, matrix[rowEnd][i])
}
}
rowEnd--
if colBegin <= colEnd {
for i := rowEnd; i >= rowBegin; i-- {
ans = append(ans, matrix[i][colBegin])
}
}
colBegin++
}
fmt.Println(ans)
return ans
}