【代码随想录 | 数组 05】螺旋矩阵 ||

在这里插入图片描述

文章目录

  • 5.螺旋矩阵2
    • 5.1题目
    • 5.2思路

5.螺旋矩阵2

5.1题目

59. 螺旋矩阵 II

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

  • 示例一:

    img

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

5.2思路

  • 每次赋值可分为4次:上、右、下、左

  • 首先明确每次赋值,确保都是==左闭右开==(即1 2;3 4;5 6;7 8)

img

  • 循环的圈数:loop=n/2;n为3时循环一圈;n为4时循环两圈
  • n为奇数,则最后中间还有个值,arr(n/2)(n/2)
  • 每次循环过后,右边界都要缩小一格
  • 注意每次循环过后,起始点的位置!!!
class Solution {
    public int[][] generateMatrix(int n) {
        
        int loop=n/2;
        int count=1;
        int[][] arr=new int[n][n];
        int start=0;                //每次循环的开始点(start,start)
        int i=0;
        int j=0;
        int offset=1;               //每次循环右边界收缩一位,控制每条边的遍历长度
        for(int k=0;k<loop;k++){    //k表示正在循环的圈数

            i=start;                //更新起始点
            j=start;

            //上:从左到右
            for(j=start;j<n-offset;j++){
                arr[i][j]=count++;
            }

            //右:从上到下
            for(i=start;i<n-offset;i++){
                arr[i][j]=count++;
            }

            //下:从右到左
            for(;j>start;j--){
                arr[i][j]=count++;
            }

            //左:从下到上
            for(;i>start;i--){
                arr[i][j]=count++;
            }

            start++;    //循环起始点加一
            offset++;
        }
        if (n % 2 == 1) {
            arr[n/2][n/2] = count;
        }
        return arr;
    }
}

在这里插入图片描述

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

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

相关文章

全景解析 Partisia Blockchain:以用户为中心的全新数字经济网络

在区块链世界中&#xff0c;以比特币、以太坊网络为代表的主流区块链奠定了该领域早期的基础&#xff0c;并让去中心化、点对点、公开透明以及不可逆成为了该领域固有的意识形态。事实上&#xff0c;过于透明正在成为区块链规模性采用的一大障碍&#xff0c;我们看到 90% 以上的…

零知识玩转AVH(2)—— 怎么玩(1)

接前一篇文章&#xff1a;零知识玩转AVH&#xff08;1&#xff09;—— 初次接触 前一篇文章讲了AVH是什么&#xff0c;本文开始&#xff0c;详细AVH具体怎么玩。 由前一篇文章中提到的CSDN工作人员对于活动的说明&#xff0c;可以得出以下信息&#xff1a; 1. 这个任务是分两…

FineReport报表JS实现点击超链打开对话框报表并传参

例如在报表开发中&#xff0c;有如下需求&#xff1a; 点击当前报表中的某些文字&#xff0c;希望弹出另外的报表展示其他信息 &#xff08;即可以通过JS实现点击超链接打开报表对话框&#xff0c;并且可以传递参数到报表对话框中&#xff09;帆软帮助文档参考链接&#xff1a;…

AV1:编码块划分

​AV1是AOM于2018年发布的一代视频编码标准&#xff0c;相比于VP9其编码效率提升30%&#xff0c;相对于H.26X系列标准&#xff0c;AV1完全免去专利费可以自由使用。 AV1和其他视频编码标准类似&#xff0c;也采用基于块的编码架构。当编码器读进一帧图像&#xff0c;首先将其划…

签到提醒小工具:实时屏幕二维码检测+Server酱消息推送

前言 本文做了一个小工具&#xff0c;用来实时检测屏幕中出现的二维码&#xff0c;并通过Server酱发送信息推送到微信。 二维码检测 二维码检测主要通过opencv的detectAndDecode方法&#xff0c;基本用法如下&#xff1a; data, bbox, rectifiedImage detector.detectAndD…

【深度学习笔记】7_3 小批量随机梯度下降

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 7.3 小批量随机梯度下降 在每一次迭代中&#xff0c;梯度下降使用整个训练数据集来计算梯度&#xff0c;因此它有时也被称为批量梯度下…

折扣价和折扣实时转换

背景 : react 项目 问题 : 在折扣数中输入折扣2.333333&#xff0c;中间会多很多0&#xff0c;输入2.222&#xff0c;不能正常输入到第三位 如下图 原因 : toFixed()数字转字符串时可能会导致精度问题 解决思路 : parseFloat来解析浮点数,Number.isFinite判断给定的值是否为有…

es 查询案例分析

场景描述&#xff1a; 有这样一种场景&#xff0c;比如我们想搜索 title&#xff1a;Brown fox body&#xff1a;Brown fox 文章索引中有两条数据&#xff0c;兔子和狐狸两条数据 PUT /blogs/_bulk {"index": {"_id": 1}} {"title": "…

DayDreamInGIS 之 ArcGIS Pro二次开发 锐角检查

功能&#xff1a;检查图斑中所有的夹角&#xff0c;如果为锐角&#xff0c;在单独的标记图层中标记。生成的结果放在默认gdb中&#xff0c;以 图层名_锐角检查 的方式命名 大体实现方式&#xff1a;遍历图层中的所有要素&#xff08;多部件要素分别处理&#xff09;&#xff0…

【C语言】qsort函数的使用

1.使用qsort函数排序整型数据 #include <stdio.h> #include <string.h> #include <stdlib.h>//void qsort(void* base, //指针&#xff0c;指向的是待排序的数组的第一个元素 // size_t num, //是base指向的待排序数组的元素个数 // siz…

力扣每日一题 在受污染的二叉树中查找元素 哈希 DFS 二进制

Problem: 1261. 在受污染的二叉树中查找元素 思路 &#x1f468;‍&#x1f3eb; 灵神题解 &#x1f496; 二进制 时间复杂度&#xff1a;初始化为 O ( 1 ) O(1) O(1)&#xff1b;find 为 O ( m i n ( h , l o g 2 t a r g e t ) O(min(h,log_2target) O(min(h,log2​targ…

Django 学习笔记(Day1)

「写在前面」 本文为千锋教育 Django 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 Django 快速入门 1.1 Django 介绍 1.2 Django 安装 1.3 创建 Django 项目 1.4 运行 Django 项目 1.5 数据迁…

【C#】.net core 6.0 使用第三方日志插件Log4net,日志输出到控制台或者文本文档

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

【C++】stack/queue

链表完了之后就是我们的栈和队列了&#xff0c;当然我们的STL中也有实现&#xff0c;下面我们先来看一下简单用法&#xff0c;跟我们之前C语言实现的一样&#xff0c;stack和queue有这么几个重要的成员函数 最主要的就是这么几个&#xff1a;empty&#xff0c;push&#xff0c;…

python读取大型csv文件,降低内存占用,提高程序处理速度

文章目录 简介读取前多少行读取属性列逐块读取整个文件总结参考资料 简介 遇到大型的csv文件时&#xff0c;pandas会把该文件全部加载进内存&#xff0c;从而导致程序运行速度变慢。 本文提供了批量读取csv文件、读取属性列的方法&#xff0c;减轻内存占用情况。 import pand…

git commit --amend

git commit --amend 1. 修改已经输入的commit 1. 修改已经输入的commit 我已经输入了commit fix: 删除无用代码 然后现在表示不准确&#xff0c;然后我通过命令git commit --amend修改commit

鼓楼夜市管理wpf+sqlserver

鼓楼夜市管理系统wpfsqlserver 下载地址:鼓楼夜市管理系统wpfsqlserver 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于C#wpf架构和sql server数据库 功能模块&#xff1a; 登录注册 鼓楼夜市管理系统主界面所有店铺信…

企业电子招投标系统源码-从源码到实践:深入了解鸿鹄电子招投标系统与电子招投标

在数字化采购领域&#xff0c;企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力&#xff0c;通过待办消息、招标公告、中标公告和信息发布等功能模块…

Tictoc3例子

在tictoc3中&#xff0c;实现了让 tic 和 toc 这两个简单模块之间传递消息&#xff0c;传递十次后结束仿真。 首先来介绍一下程序中用到的两个函数&#xff1a; 1.omnetpp中获取模块名称的函数 virtual const char *getName() const override {return name ? name : "&q…

Python 一步一步教你用pyglet制作汉诺塔游戏(终篇)

目录 汉诺塔游戏 完整游戏 后期展望 汉诺塔游戏 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;是一个源于印度古老传说的益智玩具。这个传说讲述了大梵天创造世界的时候&#xff0c;他做了三根金刚石柱子&#xff0c;并在其中一根柱子上从下往上按照大小顺序摞…