顺时针打印矩阵
(start,start) | (start,endCol) |
(endRow,start) | (endRow,endCol) |
func helper(matrix *[][]int, result *[]int, start, row, col int) { curRow := row - start - 1 curCol := col - start - 1 // 打印第一行 for i := start; i <= curCol; i++ { *result = append(*result, (*matrix)[start][i]) } // 打印最后一列 if curRow > start { for i := start + 1; i <= curRow; i++ { *result = append(*result, (*matrix)[i][curCol]) } } // 打印最后一行 if curRow > start && curCol > start { for i := curCol - 1; i >= start; i-- { *result = append(*result, (*matrix)[curRow][i]) } } //打印第一列 if curRow > start + 1 && curCol > start { for i := curRow - 1; i > start; i-- { *result = append(*result, (*matrix)[i][start]) } } } func printMatrix( matrix [][]int ) []int { // write code here if len(matrix) == 0 { return []int{} } if len(matrix[0]) == 0 { return []int{} } var result []int start := 0 row := len(matrix) col := len(matrix[0]) for row > 2 * start && col > 2 * start { helper(&matrix, &result, start, row, col) start++ } return result }
原文:https://www.cnblogs.com/dingxiaoqiang/p/14634907.html