码迷,mamicode.com
首页 > 编程语言 > 详细

【python】Leetcode每日一题-螺旋矩阵2

时间:2021-03-17 14:59:30      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:elf   strong   turn   ref   matrix   lol   problem   i+1   正方形   

【python】Leetcode每日一题-螺旋矩阵2

【题目描述】

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例1:

技术图片

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例2:

输入:n = 1
输出:[[1]]

提示:

1 <= n <= 20

【分析】

  • 思路:和螺旋矩阵1类似

    首先赋值矩阵周围一圈,再赋值第二>>>圈,for循环形式递归。

  • AC代码:

    class Solution(object):
        def generateMatrix(self, n):
            """
            :type n: int
            :rtype: List[List[int]]
            """
            matrix = [[0 for i in range(n)] for i in range(n)]
            index = 1
            for i in range((n+1)//2):
            	m = n - i*2
            	for j in range(m):
            		matrix[i][j+i] = index
            		index+=1
            	for j in range(m-1):
            		matrix[i+1+j][n-i-1] = index
            		index += 1
            	for j in range(m-1):
            		matrix[n-i-1][n-i-2-j] = index
            		index += 1
            	for j in range(m-2):
            		matrix[n-i-j-2][i] = index
            		index += 1
            return matrix
    
  • 讨论:

    • java版的1ms代码:

      主体思想同自己的AC代码,可见python效率的确低于java

      class Solution {
          public int[][] generateMatrix(int n) {
              int[][] arr = new int[n][n];
              int c = 1, j = 0;
              while (c <= n * n) {
              
                  for (int i = j; i < n - j; i++)
                      arr[j][i] = c++;
                  for (int i = j + 1; i < n - j; i++)
                      arr[i][n - j - 1] = c++;
                  for (int i = n - j - 2; i >= j; i--)
                      arr[n - j - 1][i] = c++;
                  for (int i = n -j - 2; i > j; i--)
                      arr[i][j] = c++;
      
                  j++;
              }
      
              return arr;
          }
      
      }
      
    • 官方题解:

      昨天只挂了一个链接,今天总结一下。

      • 模拟:

        顾名思义,模拟矩阵生成过程。

      • 按层模拟:

        将矩阵分层,只需考虑每一层怎样处理即可。

      • 链接:点这里

【python】Leetcode每日一题-螺旋矩阵2

标签:elf   strong   turn   ref   matrix   lol   problem   i+1   正方形   

原文地址:https://www.cnblogs.com/krnl-dpr/p/14546289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!