Leetcode練習(Python):數組類:第59題:給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。


題目:
給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。
思路:
是第54題的逆向過程
程序:
class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        if n <= 0:
            return []
        if n == 1:
            return [[1]]

        matrix = [[0 for i in range(n)] for i in range(n)]

        row_begin = 0
        row_end = n - 1
        column_begin = 0
        column_end = n - 1

        number = 1
        
        while row_begin <= row_end and column_begin <= column_end and number <= n * n:
            for index1 in range(column_begin, column_end + 1):
                matrix[row_begin][index1] = number
                number += 1
            row_begin += 1
            for index2 in range(row_begin, row_end + 1):
                matrix[index2][column_end] = number
                number += 1
            column_end -= 1
            for index1 in range(column_end, column_begin - 1, -1):
                if row_end >= row_begin:
                    matrix[row_end][index1] = number
                number += 1
            row_end -= 1
            for index2 in range(row_end, row_begin - 1, -1):
                if column_end >= column_begin:
                    matrix[index2][column_begin] = number
                number += 1
            column_begin += 1
        return matrix  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 Leetcode練習(Python):數組類:第54題:給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。 Leetcode練習(Python):數組類:第73題:給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地算法。 Leetcode練習(Python):動態規划類:第221題:最大正方形:在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。 Leetcode練習(Python):數組類:第75題:給定一個包含紅色、白色和藍色,一共 n 個元素的數組,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。 此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用代碼庫中的排序函數來解決這道題。 Leetcode練習(Python):數組類:第209題:給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組。如果不存在符合條件的連續子數組,返回 0。 Leetcode練習(Python):數組類:第169題:給定一個大小為 n 的數組,找到其中的多數元素。多數元素是指在數組中出現次數大於 ⌊ n/2 ⌋ 的元素。 你可以假設數組是非空的,並且給定的數組總是存在多數元素。 Leetcode練習(Python):數組類:第53題:給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。進階: 如果你已經實現復雜度為 O(n) 的解法,嘗試使用更為精妙的分治法求解。 Leetcode練習(Python):第448題:找到所有數組中消失的數字:給定一個范圍在 1 ≤ a[i] ≤ n ( n = 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次。 Leetcode練習(Python):數組類:第128題:給定一個未排序的整數數組,找出最長連續序列的長度。 要求算法的時間復雜度為 O(n)。 Leetcode練習(Python):數組類:第162題:峰值元素是指其值大於左右相鄰值的元素。 給定一個輸入數組 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素並返回其索引。 數組可能包含多個峰值,在這種情況下,返回任何一個峰值所在位置即可。 你可以假設 nums[-1] = nums[n] = -∞。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM