首页 > 其他分享 >54. 螺旋矩阵

54. 螺旋矩阵

时间:2024-12-22 15:31:36浏览次数:4  
标签:tmp begin end matrix 螺旋 54 矩阵 ans List

  1. 题目链接

  2. 解题思路:宏观思路,一圈一圈打,确定好「一圈」的左上角以及右下角,然后再打印。有两种特殊情况,左上角和右上角的列相等时,只需要打一行即可;左上角的列和右下角的列相等时,只需打印一列即可。

  3. 代码:

    
    from typing import List
    
    class Solution:
        def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
            n = len(matrix)
            m = len(matrix[0])
            ans = []
            begin_r = 0
            begin_c = 0
            end_r = n - 1
            end_c = m - 1
            while begin_r <= end_r and begin_c <= end_c:    # 一圈一圈打印
                if begin_r == end_r:   # 只需要打印一行
                    tmp = begin_c
                    while tmp <= end_c:
                        ans.append(matrix[begin_r][tmp])
                        tmp += 1
                    break
    
                if begin_c == end_c:    # 只需打印一列
                    tmp = begin_r
                    while tmp <= end_r:
                        ans.append(matrix[tmp][end_c])
                        tmp += 1
                    break
                
                # 上
                tmp = begin_c
                while tmp <= end_c:
                    ans.append(matrix[begin_r][tmp])
                    tmp += 1
    
                # 右
                tmp = begin_r + 1
                while tmp <= end_r:
                    ans.append(matrix[tmp][end_c])
                    tmp += 1
    
                # 下
                tmp = end_c - 1
                while tmp >= begin_c:
                    ans.append(matrix[end_r][tmp])
                    tmp -= 1
                
                # 左
                tmp = end_r - 1
                while tmp > begin_r:
                    ans.append(matrix[tmp][begin_c])
                    tmp -= 1
                
    
                # 打印完一圈后,更新左上角点  和右下角点
                begin_r += 1
                begin_c += 1
                end_r -= 1
                end_c -=1
    
            return ans
    
    
    
    

标签:tmp,begin,end,matrix,螺旋,54,矩阵,ans,List
From: https://www.cnblogs.com/ouyangxx/p/18622177

相关文章

  • Unity Shader学习日记 part 3 线性代数--矩阵变换
            之前我们学到了矩阵的相关基础,了解矩阵使用了进行变幻的。可是在三维空间中我们不管是表示点还是向量,都是通过x,y,z来表示的。那我们如何在三维向量中,表示出来变换的呢?齐次坐标    齐次坐标:将原本的n维向量用n+1维来表示。    原因:1.不论是......
  • 2024-12-22:矩阵中的最大得分。用go语言,给定一个由正整数构成的 m x n 矩阵 grid,你可以
    2024-12-22:矩阵中的最大得分。用go语言,给定一个由正整数构成的mxn矩阵grid,你可以从任意单元格开始,移动到正下方或正右侧的任一单元格(不要求相邻)。在从值为c1的单元格移动到值为c2的单元格时,得分计算为c2-c1。你的目标是至少移动一次,并找到能够获得的最大总得......
  • 使用HTML5制作一个螺旋的动画特效
    制作一个螺旋动画特效可以通过多种方式来实现,这里我将为你提供一个基于HTML5<canvas>元素和JavaScript的简单示例。以下是一个简单的螺旋动画特效的示例代码:<!DOCTYPEhtml><html><head><title>螺旋动画特效</title><style>body{margin:0;}......
  • 「Mac玩转仓颉内测版54」应用篇1 - 编写一个简单的计算器
    本篇通过仓颉编程语言实现一个简单的计算器应用,支持加法、减法、乘法和除法四种基本运算。用户可通过交互式输入完成运算并实时查看结果。关键词仓颉编程语言输入与输出条件语句算术运算一、功能说明开发目标:用户输入两个数字。用户选择一个运算符(+、-、*、/)。程序根......
  • CF1548A Web of Lies 题解
    WebofLies题解洛谷。Codeforces。题意比较直接,就不复述了。思路分析题意首先根据操作3,删人只是暂时的,可以分析出每次删的人对于后面都没有影响。关注到这个词:执行以下操作直至不可再执行为止。显然,在整个图中所有该被删除的人都逃不掉,迟早被删除。那么看看什么样......
  • 2545. 根据第 K 场考试的分数排序
    思路遍历列表,dict1记录每一行的数据,dict2记录k列数据以及对应的行对k列数据进行降序排序dict2根据排序后的dict2,依次获取对应行的数据时间复杂度:O(nlogN)代码classSolution:defsortTheStudents(self,score:List[List[int]],k:int)->List[List[int]]......
  • 云手机:小红书矩阵搭建方案
    云手机概述:1.亚矩阵云手机是一个基于ARM虚拟化技术的云手机平台,通过云计算、大数据、人工智能、边缘计算等技术,全面支持安卓各型号手机应用的使用与管理服务。全天候云端智能托管应用,让用户突破终端限制,实现业务全天候稳定在线。2.亚矩阵云手机是在服务器端运行APP的仿真......
  • 2545. 根据第 K 场考试的分数排序
    班里有 m 位学生,共计划组织 n 场考试。给你一个下标从 0 开始、大小为 mxn 的整数矩阵 score ,其中每一行对应一位学生,而 score[i][j] 表示第 i 位学生在第 j 场考试取得的分数。矩阵 score 包含的整数 互不相同 。另给你一个整数 k 。请你按第 k ......
  • 搜索二维矩阵 II
    编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例1:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],ta......
  • 螺旋矩阵
    给你一个 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]思路:设置好边界......