矩阵 螺旋矩阵

简介: 矩阵 螺旋矩阵

1.螺旋矩阵

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

输入:n = 3

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

9f23608ff78944f8bfc96b8513d1fb1d.png

def generateMatrix(n):
    nums=[[0]*n for _ in range(n)]
    start_x=0
    start_y=0
    offset=1 
    s=n//2 要进行的圈数
    count=1 # 从1开始进行螺旋
    loop = n//2
    for offset in range(1, loop + 1) : 
        for i in range(start_x,n-offset): #从左到右
                 nums[start_x][i]=count
                 count+=1
        for i in range(start_y,n-offset):  #上到下
                 nums[i][n-offset]=count
                 count+=1
        for i in range(n-offset,start_y,-1):  #从右到左
                 nums[n-offset][i]=count
                 count+=1
        for i in range(n-offset,start_x,-1):  # 从上到下
                 nums[i][start_y]=count
                 count+=1
        start_x+=1
        start_y+=1
    if s%2!=0:
            nums[s][s]=n**2
    return nums

2.螺旋矩阵

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

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

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

e13c4d5394224c57aec9c937814dafaa.png

def spiralOrder(matrix):
    l,r,t,b=0,len(matrix[0])-1,0,len(matrix)-1
    nums=[]
    while True:
        for i in range(l,r+1):
                a.append(martix[t][i])
        t+=1
        if t>b:
           break
        for i in range(t,b+1):
                a.append(martix[r][i])
        r-=1
        if l>r:
            break
        for i in range(r,l-1,-1):
                a.append(matrix[b][i])
        b-=1
        if t>b:
            break
        for i in range(b,t-1,-1):
                a.append(martix[i][l])
        l+=1
        if l>r:
            break
    return nums

3.螺旋遍历二维数组

给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。

螺旋遍历:从左上角开始,按照 向右向下向左向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。

def spiraarry(array):
     if array==[]:
            return []
     nums=[]
     l,r,t,b=0,len(array[0])-1,0,len(array)-1
     while True:
            for i in range(l,r+1):
                nums.append(array[t][i])
            t+=1
            if t>b:
                break
            for i in range(t,b+1):
                nums.append(array[i][r])
            r-=1
            if l>r:
                break
            for i in range(r,l-1,-1):
                nums.append(array[b][i])
            b-=1
            if t>b:
                break
            for i in range(b,t-1,-1):
                nums.append(array[i][l])
            l+=1
            if l>r:
                break
      return nums


相关文章
|
存储 Dragonfly 弹性计算
2023年阿里云服务器2核4G配置收费标准与活动价格参考,价格297.98元1年起
2核4G配置的云服务器通常是普通企业用户的首选配置,2023年新用户租用阿里云轻量应用服务器低至108元首年,2核4G配置目前活动价格仅需297.98元1年起,不过阿里云不同实例类型的2核4G云服务器配置,产品价格也各不相同。而在平时购买和活动期间买价格也是不一样的。本文主要为大家介绍目前阿里云服务器2核4G配置收费标准与活动价格,以供参考。
779 0
2023年阿里云服务器2核4G配置收费标准与活动价格参考,价格297.98元1年起
|
10月前
MAGICORE:基于多代理迭代的粗到细精炼框架,提升大语言模型推理质量
MAGICORE是一种多代理迭代框架,旨在改进大语言模型(LLM)的推理能力。该框架通过将问题分类为简单或困难,并分别为其应用粗粒度聚合或细粒度精炼,有效避免了过度精炼、错误定位及精炼不足等问题。MAGICORE包含Solver、Reviewer和Refiner三个角色,结合结果和过程奖励模型,实现有针对性的反馈和迭代精炼。实验结果显示,MAGICORE在多个数据集和模型上显著优于现有的聚合和精炼方法,提升了推理准确性和样本效率。
314 3
MAGICORE:基于多代理迭代的粗到细精炼框架,提升大语言模型推理质量
|
前端开发
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(七)
基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(七)
355 0
|
8月前
|
供应链 数据挖掘 Java
电商API接口介绍
‌电商API接口‌是指一组用于访问电商平台中数据的编程接口,通过这些接口,开发者可以以编程方式获取商品信息、订单信息、用户信息等,实现电商平台数据的对接和交互。
251 5
|
存储 算法 搜索推荐
使用Python实现单链表
使用Python实现单链表
135 0
|
11月前
|
Ubuntu Linux Docker
使用Docker进行容器化:从零开始的技术博文
【8月更文挑战第16天】从零开始掌握Docker容器化技术:本文详细介绍Docker基本概念、安装配置流程及核心组件。涵盖Docker镜像与容器管理、镜像加速配置,以及如何利用Dockerfile自动化构建镜像,助您快速入门并高效运用Docker进行软件开发与部署。
|
12月前
|
容器
Spectre.Console.Cli注入服务的几种姿势
【7月更文挑战第13天】要在 Spectre.Console.Cli 中注入服务,可采用以下方法: 1. 使用依赖注入容器: - 配置如 `Microsoft.Extensions.DependencyInjection` 这样的依赖注入容器,并注册服务 2. 自定义类型注册器: - 创建自定义的 `TypeRegistrar` 类实现 `ITypeRegistrar` 接口,用于注册服务。 - 同时创建 `TypeResolver` 类实现 `ITypeResolver` 接口,用于解析服务。 3. 直接手动设置依赖:
139 2
|
机器学习/深度学习 TensorFlow 算法框架/工具
MTCNN(Multi-task Cascaded Convolutional Networks)
MTCNN(Multi-task Cascaded Convolutional Networks)
297 0
|
Python
Pycharm中VCS找不到check out from Version Control选项原因及绑定用户github
Pycharm中VCS找不到check out from Version Control选项原因及绑定用户github
1017 0
Pycharm中VCS找不到check out from Version Control选项原因及绑定用户github
|
JavaScript C++
[√]cocos creator 热更新源码剖析(2)
[√]cocos creator 热更新源码剖析(2)
177 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问