算法训练营——day4螺旋矩阵

1 螺旋矩阵II-力扣59(中等)

1.1 题目:螺旋矩阵II

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= n <= 20

1.2 编程模拟思路解法

首先避免起始末尾节点被重复访问,所以我们采取左开右闭 [ i , j ) 区间来进行模拟,注解中以第一圈为例,后面循环中圈内节点数减少,但是核心思路不变。

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] ret = new int[n][n];// 二维数组存储
        int startx = 0, starty = 0;// 定义起始行和列开始位置
        int loop = 1;
        int count = 1;// 填入的数字
        int offset = 1;

        // 采用左闭右开区间[i,j)
        while (loop <= n / 2) {
            int i = startx;
            int j = starty;
            // 给第一圈的第一行赋值
            for (; j < n - offset; j++) {
                ret[i][j] = count++;
            }
            // 第一圈的最后一列赋值
            for (; i < n - offset; i++) {
                ret[i][j] = count++;
            }
            // 第一圈的最后一行赋值
            for (; j > starty; j--) {
                ret[i][j] = count++;
            }
            // 第一圈第一列赋值
            for (; i > startx; i--) {
                ret[i][j] = count++;
            }
            startx++;
            starty++;
            offset++;
            loop++;
        }
        if (n % 2 == 1) {
            ret[startx][starty] = count;
        }
        return ret;

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/873190.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法学习:滑动窗口

题目 滑动窗口 滑动窗口的题目在解决统计连续带特殊要求的元素串问题时作用巨大。逃离仅仅只是套路学习的黑洞&#xff0c;我认为这种方法在无序的统计中&#xff0c;找到了有序的切入点。初看题目时&#xff0c;可以想到的统计方法有很多&#xff0c;但实现在计算机上则必须有…

贝锐蒲公英远程视频监控方案:4G入网无需公网IP,跨品牌统一管理

在部署视频监控并实现集中监看时&#xff0c;常常会遇到各种挑战。比如&#xff1a;部分监控点位布线困难、无法接入有线宽带&#xff0c;或是没有固定公网IP&#xff0c;难以实现远程集中监看&#xff1b;已有网络质量差&#xff0c;传输延迟大、丢包率高&#xff0c;远程实时…

【王树森】BERT:预训练Transformer模型(个人向笔记)

前言 BERT&#xff1a;Bidirectional Encoder Representations from TransformerBERT是用来预训练Transformer模型的encoder的本节课只讲述主要思想BERT用两个主要思想来训练Transformer的encoder网络&#xff1a;①随机遮挡单词&#xff0c;让encoder根据上下文来预测被遮挡的…

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_search函数&…

win12R2安装.NET Framework 3.5

一丶安装原因 因此插件的缺失, 有些软件或系统不支持安装. 二丶安装步骤 1丶下载.NET Framework 3.5 点击插件下载, 提取码: 1995, 下载完成之后解压到想要安装的位置上. 2丶打开 服务器管理器 3丶点击: 管理 -> 添加角色和功能 4丶点击下一步到服务器角色, 选择web服…

Android应用开发项目式教程——序

Android技术 Android是重要的客户端技术&#xff0c;因其开源开放的特点&#xff0c;Android在其初期就迅速成长为智能手机的主流操作系统&#xff0c;近年来更进一步成为智能电视、智能车载终端等智能设备的主流操作系统&#xff0c;其活跃设备数量已经超过30亿台&#xff0c…

通用内存快照裁剪压缩库Tailor介绍及源码分析(一)

背景 我们知道内存快照是治理 OOM 问题及其他类型的内存问题的重要数据源&#xff0c;内存快照中保存了进程虚拟机的完整的堆内存数据&#xff0c;很多时候也是调查其他类型异常的重要参考。但是dump出来的堆转储文件.hprof往往很大&#xff0c;以 LargeHeap 应用为例&#xf…

吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.09.04 更新】

以前我也是通过官网使用&#xff0c;但是经常被封号&#xff0c;就非常不方便&#xff0c;后来有朋友推荐国内工具&#xff0c;用了一阵之后&#xff0c;发现&#xff1a;稳定方便&#xff0c;用着也挺好的。 最新的 GPT-4o、4o mini&#xff0c;可搭配使用~ 1、 最新模型科普&…

XGBoost算法-上

简单解释一下xgboost这个模型 xg是一个非常强大&#xff0c;非常受欢迎的机器学习模型&#xff0c;其中最大的特色就是boosting&#xff08;改进、推进&#xff09;&#xff0c;怎么改进呢&#xff1f;就是xgboost这个算法&#xff0c;它会先建立一颗简单的决策树&#xff0c;…

虚拟机ubuntu配置opencv和opencv_contrib

前期准备 1.下载opencv和opencv_contrib源码 opencv-4.6.0&#xff1a;https://opencv.org/releases/ opencv_contrib-4.6.0&#xff1a;https://github.com/opencv/opencv_contrib 在ubuntu直接下载或者在window上下好传到虚拟机里都可以 自己找个地方把他们解压&#xf…

【Python篇】PyQt5 超详细教程——由入门到精通(终篇)

文章目录 PyQt5超详细教程前言第9部分&#xff1a;菜单栏、工具栏与状态栏9.1 什么是菜单栏、工具栏和状态栏9.2 创建一个简单的菜单栏示例 1&#xff1a;创建带有菜单栏的应用程序代码详解&#xff1a; 9.3 创建工具栏示例 2&#xff1a;创建带有工具栏的应用程序代码详解&…

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688&#xff0c;功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算&#xff0c;可支持 16 路高清视频实时分析&#xff0c;灵活应对图像、语音、自…

多个路由器级联实现子网的方式

好久没写博客啦&#xff0c;最近搬家&#xff0c;换了网络环境&#xff0c;简单记录一下网络配置。 拓扑图就不画了&#xff0c;光猫 - > 华为TC7102路由 -> 华为AX2 Pro路由 -> 各种设备&#xff0c;简单表示就是这样。 原因是第一个路由是房东的&#xff0c;我希望自…

宝塔部署Vue项目解决跨域问题

一、前言 使用宝塔面板部署前端后端项目相比用命令行进行部署要简单许多&#xff0c;宝塔的可视化操作对那些对Linux不熟悉的人很友好。使用宝塔部署SpringBoot后端项目和Vue前端项目的方法如下&#xff1a; 1、视频教程 2、文字教程1 3、文字教程2 以上的教程完全可以按照步骤…

视频智能分析平台LntonAIServer视频质量诊断功能花屏、抖动、遮挡等检测

LntonAIServer新增了视频质量诊断功能&#xff0c;该功能专注于提升视频监控系统的稳定性和可用性&#xff0c;主要通过自动化检测来识别视频流中常见的质量问题&#xff0c;比如花屏、抖动、遮挡等问题。这些问题是影响视频监控效果的主要因素之一&#xff0c;而自动化的检测能…

解决el-table中使用el-input无法聚焦问题

在el-table中点击单元格时使用el-input或其他表单组件编辑单条数据。会出现聚焦不上的问题&#xff0c;需要手动点击才能够聚焦。究其原因是因为点击单元格时页面已自动聚焦到单元格&#xff0c;此时无法自动聚焦到对应的表单&#xff0c;需要手动设置。 <template><e…

操作系统八股总结

操作系统八股总结 操作系统的四大功能&#xff1a;进程控制&#xff0c;内存管理&#xff0c;设备管理&#xff0c;文件管理进程的定义:并发程序的执行&#xff0c;进程的同步与互斥进程的状态&#xff1a;创建&#xff0c;终止&#xff0c;就绪&#xff0c;运行&#xff0c;阻…

图论(2)

一、度 度统计的是一个节点上又多少条边 度出度入度 出度&#xff1a;统计以该节点为起始点箭头指向外面的边的条数 入度&#xff1a;统计箭头指向该节点的边数 度为1的节点为悬挂节点&#xff0c;边为悬挂边 用矩阵计算节点的度 二、握手定理 比如这里第一个集合里面有三…

blender图像如何分层导出?blender动画云渲染

在blender渲染时产品会被其他物体影响&#xff0c;这时候就可以用到blender中的阻隔&#xff1b;分层导出图像到PS中进行校色等后期处理。 在分层前&#xff0c;我们需要先打开渲染属性-胶片-透明&#xff0c;这样导出的图像才是透明背景的&#xff0c;反之会变成黑色底。 第一…

传统CV算法——边缘算子与图像金字塔算法介绍

边缘算子 图像梯度算子 - Sobel Sobel算子是一种用于边缘检测的图像梯度算子&#xff0c;它通过计算图像亮度的空间梯度来突出显示图像中的边缘。Sobel算子主要识别图像中亮度变化快的区域&#xff0c;这些区域通常对应于边缘。它是通过对图像进行水平和垂直方向的差分运算来…