题解 | #螺旋矩阵#

螺旋矩阵

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
}
全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务