首页 > 其他分享 >用 Go 剑指 Offer 29. 顺时针打印矩阵

用 Go 剑指 Offer 29. 顺时针打印矩阵

时间:2023-04-07 17:11:44浏览次数:33  
标签:matrix Offer int res 29 up down Go left

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

 

示例 1:

 

 


输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:

 

 


输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
 

提示:

m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/spiral-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

消消乐法:顺时针走,读取一行就删一行

func spiralOrder(matrix [][]int) []int {
    if len(matrix) == 0 || len(matrix[0]) == 0{
        return []int{}
    }
    res := make([]int, 0)
    up, left, down, right := 0, 0, len(matrix)-1, len(matrix[0])-1
    for {
        for i := left; i <= right; i++ {
            res = append(res, matrix[up][i])
        }
        up++
        if up > down {
            break
        }
        for i := up; i <= down; i++ {
            res = append(res, matrix[i][right])
        }
        right--
        if right < left {
            break
        }
        for i := right; i >= left; i-- {
            res = append(res, matrix[down][i])
        }
        down--
        if down < up {
            break
        }
        for i := down; i >= up; i-- {
            res = append(res, matrix[i][left])
        }
        left++
        if left > right {
            break
        }
    }
    return res
}

 

标签:matrix,Offer,int,res,29,up,down,Go,left
From: https://www.cnblogs.com/slowlydance2me/p/17296783.html

相关文章

  • Django条件查询的Case,When具体使用
    这个操作类似于数据库中ifelifelse的逻辑。1、数据准备:models.pyclassClient(models.Model):REGULAR='R'GOLD='G'PLATINUM='P'ACCOUNT_TYPE_CHOICES=[(REGULAR,'Regular'),(GOLD,'Gold&#......
  • 一个人的职业生涯之旅 —— 应届生求职、面试、Offer、跳槽(发展瓶颈、薪资倒挂、职业
    一、应届生求职问题1、求职平台1、Boss直聘2、前程无忧3、拉勾网4、应届生求职网站_最新更新校园招聘/实习机会/内推资讯_牛客网_牛客网_牛客网2、简历怎么写2.1、简历照片1、要与本人形象相符,不要看上去有较大差别,使用最近半年内的免冠照片,选择能够显示自己气质佳的照片,但......
  • 用 Go 剑指 Offer 17. 打印从1到最大的n位数
    输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。示例1:输入:n=1输出:[1,2,3,4,5,6,7,8,9] 说明:用返回一个整数列表来代替打印n为正整数通过次数251,223提交次数323,027来源:力扣(LeetCode)链接:https://leetcod......
  • vue全家桶进阶之路29:Element Plus
    ElementPlus是一个用于Vue.js的UI组件库,为开发人员提供了一组可重用和可定制化的组件,用于构建现代Web应用程序。它是流行的ElementUI库的扩展,重点是提高性能和可访问性。ElementPlus包括广泛的组件,如按钮、表单、表格、对话框等。除了常规的UI组件外,ElementPlus还提供了一些......
  • django-content-type简单示例
    fromdjango.contrib.contenttypes.fieldsimportGenericForeignKeyfromdjango.contrib.contenttypes.modelsimportContentTypefromdjango.dbimportmodelsclassComment(models.Model):content_type=models.ForeignKey(ContentType,on_delete=models.CASCA......
  • Go-context源码解析
    首先我们简单的来看一个例子,如下:(学好这个例子,我们就可以说完全掌握住context了,并且能重构一个contextfuncmain(){ ctx,cancel:=context.WithCancel(context.Background()) ctxV:=context.WithValue(ctx,1,"HelloWorld") gofunc(ctxcontext.Context){ val:=......
  • GO - 结构体嵌套
    概述Go支持将多个结构体通过嵌套的方式,组成一个大的结构体,降低了单个结构体复杂度,同时提高了结构体之间组合的灵活性。例子为了省略篇幅,本小节只使用 字面量 方式初始化,new() 的初始化方式请参照 结构体 小节。每个结构体单独初始化,最后组装package mainimport (......
  • django记录基础操作日志
    1.新增middleware.py中间件:需要在setting.py注册classLoggingMiddleware:"""日志记录模块:操作用户、操作ip、请求路径、请求方式、请求时间"""def__init__(self,get_response):self.get_response=get_responsedef__call__(self,......
  • 用 Go 剑指 Offer 11. 旋转数组的最小数字
    已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,4,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,7,0,1,4]若旋转7次,则可以得到[0,1,4,4,5,6,7]注意,数组[a[0],a[1],a[2],...,a[n-1]]旋转一次的结果为数......
  • golang TLS方式发送邮件
    packagemailimport( "crypto/tls" "errors" "fmt" "net/smtp" "net/textproto")typeloginAuthstruct{ username,passwordstring}//LoginAuthisfuncLoginAuth(usernamestring,passwordstring)......