首页 > 其他分享 >【LeetCode 刷题】数组-模拟-螺旋矩阵

【LeetCode 刷题】数组-模拟-螺旋矩阵

时间:2025-01-16 10:58:20浏览次数:3  
标签:matrix tar res 矩阵 range num LeetCode 刷题

此博客为《代码随想录》数组章节的学习笔记,主要内容为数组模拟的相关题目解析。

文章目录

59. 螺旋矩阵 II

题目链接

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        l, r, t, b = 0, n - 1, 0, n - 1
        res = [[0 for _ in range(n)] for _ in  range(n)]
        num, tar = 1, n * n
        while num <= tar:
            for i in range(l, r + 1):
                res[t][i] = num
                num += 1
            t += 1
            for i in range(t, b + 1):
                res[i][r] = num
                num += 1
            r -= 1
            for i in range(r, l - 1, -1):
                res[b][i] = num
                num += 1
            b -= 1
            for i in range(b, t - 1, -1):
                res[i][l] = num
                num += 1
            l += 1
        return res

在这里插入图片描述
图源自 Krahets 的题解

  • 定长二维数组创建的方式:内层 for 循环写第二维的维数,外层 for 循环写第一维的维数。
  • l, r, t, b 这四个量均为闭区间,在 range() 中需要有 +1 / -1 的操作。

54. 螺旋矩阵

题目链接

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        m, n = len(matrix), len(matrix[0])
        l, r, t, b = 0, n - 1, 0, m - 1
        res = [0 for _ in range(m * n)]
        num, tar = 0, m * n - 1
        while num <= tar:
            for i in range(l, r + 1):
                res[num] = matrix[t][i]
                num += 1
            t += 1
            if num > tar: break

            for i in range(t, b + 1):
                res[num] = matrix[i][r]
                num += 1
            r -= 1
            if num > tar: break

            for i in range(r, l - 1, -1):
                res[num] = matrix[b][i]
                num += 1
            b -= 1
            if num > tar: break
            for i in range(b, t - 1, -1):
                res[num] = matrix[i][l]
                num += 1
            l += 1
            if num > tar: break

        return res
  • 与 螺旋矩阵II 类似,但矩阵为长方形。
  • 长方形的矩阵需要在每一个内层 for 循环后添加判断,例如 if num > tar: break,因为可能无法完成上、右、下、左完整的一圈
  • 正方形的矩阵可以省略内层 for 循环后的判断,因为每次都能完整走完一圈,判断操作交给 while 循环即可。

标签:matrix,tar,res,矩阵,range,num,LeetCode,刷题
From: https://blog.csdn.net/Bran_Liu/article/details/145175007

相关文章

  • 【LeetCode 刷题】数组-滑动窗口
    此博客为《代码随想录》数组章节的学习笔记,主要内容为滑动窗口知识点的相关题目解析。文章目录209.长度最小的子数组904.水果成篮76.最小覆盖子串209.长度最小的子数组题目链接classSolution:defminSubArrayLen(self,target:int,nums:List[int])->......
  • LeetCode 1773. 统计匹配检索规则的物品数量
    在这个问题中,我们被要求统计一个物品数组中满足特定检索规则的物品数量。每个物品由其类型、颜色和名称定义,而检索规则由规则键和规则值指定。我们的任务是找出数组中满足这些规则的物品数量。问题描述解题思路定义索引映射:首先,我们需要定义一个映射,将规则键("type"、"color......
  • LeetCode字符串
    LeetCode字符串LeetCode字符串刷题记录基础知识字符串和数组很相似每个元素的数据类型相同都可以通过下标索引访问字符串比大小从第0个位置开始,依次比较对应位置上的字符编码大小defcompare(str1,str2):i=0j=0whilei<len(str1)andj<len(s......
  • LeetCode题练习与总结:省份数量--547
    一、题目描述有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 nxn 的矩阵 isConnected ,其......
  • LeetCode题练习与总结:游戏玩法分析 Ⅳ -- 550
    一、题目描述SQLSchema> PandasSchema> Table: Activity+--------------+---------+|ColumnName|Type|+--------------+---------+|player_id|int||device_id|int||event_date|date||games_played|int|+----......
  • LeetCode题练习与总结:移除盒子--546
    一、题目描述给出一些不同颜色的盒子 boxes ,盒子的颜色由不同的正数表示。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >=1),这样一轮之后你将得到 k*k 个积分。返回 你能获得的最大积分和 。示例1:......
  • LeetCode:21.合并两个有序链表
    LeetCode:21.合并两个有序链表解题思路与归并排序中的合并两个有序数组很相似。将数组替换成链表就能解此题。解题步骤新建一个新链表,作为返回结果。用指针遍历两个有序链表,并比较两个链表的当前节点,较小者先接入新链表,并将指针后移一步。链表遍历结束,返回新链表。/***Defini......
  • 210. 课程表 II【 力扣(LeetCode) 】
    文章目录零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码零、原题链接210.课程表II一、题目描述  现在你总共有numCourses门课需要选,记为0到numCourses-1。给你一个数组prerequisites,其中prerequisites[i]=[ai,bi],表示在选修课......
  • (ICLR-2024)VERA:基于向量的随机矩阵自适应
    VERA:基于向量的随机矩阵自适应paper是阿姆斯特丹大学发表在ICLR2024的工作papertitle:VERA:VECTOR-BASEDRANDOMMATRIXADAPTATIONABSTRACT低秩自适应(LoRA)是一种流行的方法,可在微调大型语言模型时减少可训练参数的数量,但在扩展到更大的模型或部署大量按用户......
  • 矩阵碰一碰发视频之视频剪辑功能开发全解析,支持OEM
    在短视频风靡的当下,矩阵碰一碰发视频结合视频剪辑功能,为内容创作与传播带来了全新的活力。本文将深入探讨这一创新功能的源码搭建过程,助力开发者打造出功能强大且用户体验良好的视频处理系统。一、技术选型前端技术框架:选用React作为前端开发框架,其高效的虚拟DOM机制......