首页 > 其他分享 >螺旋矩阵(LeetCode)

螺旋矩阵(LeetCode)

时间:2024-08-18 14:24:09浏览次数:10  
标签:right matrix 螺旋 top 矩阵 len LeetCode

题目

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

解题

def spiralOrder(matrix):
    if not matrix or not matrix[0]:
        return []

    top, bottom = 0, len(matrix) - 1
    left, right = 0, len(matrix[0]) - 1
    result = []

    while top <= bottom and left <= right:
        # 从左到右
        for i in range(left, right + 1):
            result.append(matrix[top][i])
        top += 1

        # 从上到下
        for i in range(top, bottom + 1):
            result.append(matrix[i][right])
        right -= 1

        if top <= bottom:
            # 从右到左
            for i in range(right, left - 1, -1):
                result.append(matrix[bottom][i])
            bottom -= 1

        if left <= right:
            # 从下到上
            for i in range(bottom, top - 1, -1):
                result.append(matrix[i][left])
            left += 1

    return result


# 测试
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
print(spiralOrder(matrix))

标签:right,matrix,螺旋,top,矩阵,len,LeetCode
From: https://blog.csdn.net/weixin_74254879/article/details/141299143

相关文章

  • leetcode 21.合并两个有序链表
    leetcode21.合并两个有序链表题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。迭代法:思路:不断迭代,谁小指向谁publicListNodemergeTwoLists(ListNodelist1,ListNodelist2){if(list1==null){......
  • leetcode3.无重复字符的最长子串
    题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。思路:滑动窗口算法。最大子串长度=右下标-左下标+1;使用map记录字符的下标,key为字符,value为下标。如果map的key出现重复,说明有重复字符了。找出左下标left,如果重复就刷新左下标。代码:publ......
  • 旋转矩阵的行列式为什么一定要等于1?
    一.为什么旋转矩阵要等于1?旋转概念:“旋转”就是一种没有拉伸或压缩的变换,|A|就只能是±1中的一个了。成为旋转矩阵的条件:正常情况下,求的旋转矩阵是不会出现-1这种情况的。det®=-1则表明R无效。解释:一个矩阵要能成为一个旋转矩阵,则它在构造上必定是正交矩阵,同时还是矩阵的每个......
  • 酉矩阵的定义和性质
    酉矩阵,又称为幺正矩阵,是线性代数中的一个重要概念。在复数空间中,酉矩阵具有与实数空间中的正交矩阵相似的性质。下面,我们将详细解释酉矩阵的定义和性质。首先,我们来定义酉矩阵。一个n阶复方阵U如果满足U的共轭转置矩阵U^H与U的乘积等于n阶单位矩阵I,即U^H*U=I,那么U就被称为酉......
  • 代码随想录day3 | LeetCode203. 移除链表元素、LeetCode707. 设计链表、LeetCode206.
    代码随想录day3|LeetCode203.移除链表元素、LeetCode707.设计链表、LeetCode206.反转链表为了防止早上写博客上传图片失败,今天试试下午写,发现图片上传正常链表基础文章链接:链表基础C/C++的定义链表节点方式,如下所示://单链表structListNode{intval;/......
  • 搜索二维矩阵
    这道题乍一看,和做过的搜索二维矩阵Ⅱ类似,用之前的代码也能通过,但忽略掉了每行的第一个整数大于前一行的最后一个整数这个条件。可以使用两次二分法来解决这道题目classSolution{public:boolsearchMatrix(vector<vector<int>>&matrix,inttarget){int......
  • 区间加法(LeetCode)
    题目        假设你有一个长度为 n 的数组,初始情况下所有的数字均为 0,你将会被给出 k​​​​​​​ 个更新的操作。        其中,每个操作会被表示为一个三元组:[startIndex,endIndex,inc],你需要将子数组 A[startIndex...endIndex](包括startIndex......
  • leetcode面试经典150题-13. 罗马数字转整数
    https://leetcode.cn/problems/roman-to-integer/description/?envType=study-plan-v2&envId=top-interview-150 GOpackageleetcode150import"testing"/*romanMap:=map[string]int{"I":1,"V":......
  • 巨大的数(dp+矩阵加速)
    第3题   巨大的数 查看测评数据信息小明定义了一种生成大数的函数f[n],他的含义是将1-n所有的正整数按照从小到大拼接起来,形成一个巨大的数,例如f[13]=12345678910111213,现在给定一个数n,输出f[n]%m的值,其中n和m都是正整数输入格式 第一行两个整数n,m部分数据:1<=n<=......
  • 巨大的矩阵(矩阵加速)
    https://www.luogu.com.cn/problem/P1397第2题   巨大的矩阵 查看测评数据信息超级计算机计算效率非常快,小明购买了一台超级计算机,用超级计算机生成一个巨大的矩阵A,矩阵A有n行m列的矩阵。A[i][j]表示矩阵A第i行第j列的元素,超级计算机生成矩阵A满足如下性质:A[1][1]=1,A[i......