Leetcode练习(Python):数组类:第54题:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

Posted 桌子哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode练习(Python):数组类:第54题:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。相关的知识,希望对你有一定的参考价值。

题目:
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
思路:
使用两个指针,然后控制好边界就可以了。
程序:
class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        row = len(matrix)
        if row <= 0:
            return []
        column = len(matrix[0])
        result = []

        row_begin = 0
        row_end = row - 1
        column_begin = 0
        column_end = column - 1

        while row_begin <= row_end and column_begin <= column_end:
            for index1 in range(column_begin, column_end + 1):
                result.append(matrix[row_begin][index1])
            row_begin += 1
            
            for index2 in range(row_begin, row_end + 1):
                result.append(matrix[index2][column_end])
            column_end -= 1

            for index1 in range(column_end, column_begin - 1, -1):
                if row_end >= row_begin:
                    result.append(matrix[row_end][index1])
            row_end -= 1

            for index2 in range(row_end, row_begin - 1, -1):
                if column_end >= column_begin:
                    result.append(matrix[index2][column_begin])
            column_begin += 1
        
        return result

以上是关于Leetcode练习(Python):数组类:第54题:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode练习(Python):数组类:第27题:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度

Leetcode练习(Python):第350题:两个数组的交集 II:给定两个数组,编写一个函数来计算它们的交集。

Leetcode练习(Python):第350题:两个数组的交集 II:给定两个数组,编写一个函数来计算它们的交集。

Leetcode练习(Python):数组类:第41题:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。

Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。

Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。