【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的更多相关文章

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

    Leetcode每日一题-螺旋矩阵 [题目描述] 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. 示例1: 输入:matrix = [[1,2,3], ...

  2. 【python】Leetcode每日一题-矩阵置零

    [python]Leetcode每日一题-矩阵置零 [题目描述] 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解 ...

  3. 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素

    [python]Leetcode每日一题-寻找旋转排序数组中的最小元素 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ...

  4. 【python】Leetcode每日一题-删除有序数组中的重复项

    [python]Leetcode每日一题-删除有序数组中的重复项 [题目描述] 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现一次 ,返回删除后数组的新长度. 不要 ...

  5. 【python】Leetcode每日一题-存在重复元素3

    [python]Leetcode每日一题-存在重复元素3 [题目描述] 给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] ...

  6. 【python】Leetcode每日一题-扰乱字符串

    [python]Leetcode每日一题-扰乱字符串 [题目描述] 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行 ...

  7. 【python】Leetcode每日一题-前缀树(Trie)

    [python]Leetcode每日一题-前缀树(Trie) [题目描述] Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的 ...

  8. 【python】Leetcode每日一题-打家劫舍2

    [python]Leetcode每日一题-打家劫舍2 [题目描述] 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋 ...

  9. 【python】Leetcode每日一题-二叉搜索树节点最小距离

    [python]Leetcode每日一题-二叉搜索树节点最小距离 [题目描述] 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 示例1: 输入:root = [4 ...

随机推荐

  1. 对String Intern()方法的理解

    今天重新看了一点周志明大佬的<深入理解Java虚拟机>,发现这个地方讲的不是很透彻,在网络上看到一些博客基本也都是在搬运原文,搞得一头雾水.弄了半天算是彻底明白了,做一下笔记. 搬运一下原 ...

  2. SpringCloud里面切换数据源无效的问题

    问题描述: 调用链:controller1的接口A->service1的方法A->service2的方法B 方法A开启了事务,且指定了数据库A的数据源 方法B也开启了事务,使用了默认的事务 ...

  3. MyBatis(八):MyBatis插件机制详解

    MyBatis插件插件机制简介 ​ MyBatis插件其实就是为使用者提供的自行拓展拦截器,主要是为了可以更好的满足业务需要. ​ 在MyBatis中提供了四大核心组件对数据库进行处理,分别是Exec ...

  4. 【odoo14】第十三章、网站开发(对外服务)

    本章我们将介绍一些关于odoo web服务方面的基础知识.进阶的内容,将在第十四章介绍. odoo中的web请求是由python的werkzeug库驱动的.odoo为了操作方便,对werkzeug进行 ...

  5. 解决linux sudo apt-get install xx是2出现无法定位软件包方法

    解决办法: 在etc/apt/sources.list最后一行添加 deb http://archive.ubuntu.com/ubuntu/ trusty main universe restric ...

  6. 云原生的弹性 AI 训练系列之一:基于 AllReduce 的弹性分布式训练实践

    引言 随着模型规模和数据量的不断增大,分布式训练已经成为了工业界主流的 AI 模型训练方式.基于 Kubernetes 的 Kubeflow 项目,能够很好地承载分布式训练的工作负载,业已成为了云原生 ...

  7. C#控制鼠标自动连续点(DEMO)

    ---------------------------界面---------------------------------------------------- ------------------ ...

  8. python多版本与虚拟环境

    这篇纯python技术文章,我自己平时也会用到,在此记录一下. 为什么会用到多个Python版本? 用macOS和Ubutntu的同学都知道系统默认安装的Python2.7.x,然后,我们平时pyth ...

  9. HashMap源码个人解读

    HashMap的源码比较复杂,最近也是结合视频以及其余大佬的博客,想着记录一下自己的理解或者当作笔记 JDK1.8后,HashMap底层是数组+链表+红黑树.在这之前都是数组+链表,而改变的原因也就是 ...

  10. 有关指针和C语言中的常量

    常量类型(五种): 字面常量(2,3,6....) ;                           enum 定义的枚举常量; 字符常量('a','b'....) ;              ...