题解 | #螺旋矩阵#

螺旋矩阵

http://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

gogogo

需要注意到矩阵为空、单行、单列的情况

func spiralOrder( matrix [][]int ) []int {
    // write code here
    res := []int{}
        //判断矩阵是否为空:为空时返回
    if len(matrix) == 0{
        return res
    }
    //初始化
    top := 0
    bottom := len(matrix)-1
    left := 0
    right := len(matrix[0])-1
    //矩阵不为空时进行循环遍历,首先从左到右,再从上到下,再从右到左,再从下到上
    for top <= bottom && left <= right{
        //当上下重叠或者左右重叠时终止循环
        for i := left;i <= right;i++{
            res = append(res,matrix[top][i])
        }    //从左到右遍历,变的是列
        top++    //每次遍历完下移一行,为下一个遍历做准备
        for i := top;i <= bottom;i++{
            res = append(res,matrix[i][right])
        }    //从上到下遍历,变的是行。单行时未执行该循环
        right--    //每遍历完左移一列,为下一个遍历做准备
        if top > bottom || left > right{
            break
        }    //单行单列,后续不用执行
        for i := right;i >= left;i--{
            res = append(res,matrix[bottom][i])
        }    //从右向左遍历,变的是列
        bottom--    //每遍历一次初始位都要左移一位,为下次遍历做准备
        for i := bottom;i >= top;i--{
            res = append(res,matrix[i][left])
        }    //从下向上遍历,变的是行
        left++    //每一次遍历初始位都要上移一位,为下次遍历做准备
    } 
    return res
}
全部评论

相关推荐

机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务