LeetCode59:螺旋矩阵Ⅱ

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

示例 1:
在这里插入图片描述
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

代码

class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> matrix(n, vector<int>(n)); //使用vector定义一个二维数组int startX = 0, startY = 0; //定义每循环一圈的起始位置int offset = 1;///需要控制每一条边遍历的长度,每次循环右边界收缩一位int loop = n / 2;//圈循环的次数,如果为奇数,就把最中间的位置直接填充int count = 1; //用来给矩阵中每一个空格赋值int i, j;while (loop--) {//下面开始的四个for就是模拟了一圈//模拟 填充上行 从左到右(左闭右开)for (j = startY; j < n - offset; j++) {  matrix[startX][j] = count++;}//模拟 填充右列 从上到下(左闭右开)for (i = startX; i < n - offset; i++) {matrix[i][j] = count++;}//模拟 填充下行 从右到做(左闭右开)for (; j > startY; j--) {matrix[i][j] = count++;}//模拟 填充左列 从下到上(左闭右开)for (; i > startX; i--) {matrix[i][j] = count++;}//第二圈开始的时候,起始位置要各自加1, // 例如:第一圈起始位置是(0, 0),第二圈起始位置是(1, 1)startX++;startY++; offset 控制每一圈里每一条边遍历的长度offset++;}// 如果n为奇数的话,需要单独给矩阵最中间的位置赋值if (n % 2 != 0)matrix[n / 2][n / 2] = count;return matrix;}
};

方法2:推荐

class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans(n,vector<int>(n));int up = 0, left = 0, right = n - 1, bottom = n - 1;int count = 1;while (true) {for (int i = left; i <= right; i++) ans[up][i] = count++;if (++up > bottom) break;for (int i = up; i <= bottom; i++) ans[i][right] = count++;if (--right < left) break;for (int i = right; i >= left; i--) ans[bottom][i] = count++;if (--bottom < up) break;for (int i = bottom; i >= up; i--) ans[i][left] = count++;if (++left > right) break;}return ans;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Canal的入门操作记录

文章目录 1.主从数据库同步原理2.canal使用步骤2.1 开启binlog2.2 配置canalcanal.propertiesinstance.properties区别 3.创建Canal用户4.取信息5.SpringBoot整合 canal其实就是假装自己是从数据库&#xff0c;来监听主数据库的binlog得到数据的变化信息 canal 模拟 MySQL slav…

浪潮信息InManage升级发布 三大功能释放数据中心运维管理压力

近日&#xff0c;浪潮信息官网开放了数据中心管理平台InManage全新版本的开放体验渠道&#xff0c;升级后的InManage拥有更强大的功能体验&#xff0c;可以有效解决大模型等AIGC应用对于数据中心的运维管理压力&#xff0c;通过全新功能的加持&#xff0c;浪潮信息将让数据中心…

docker安装和使用kafka

1. 启动zookeeper Kafka依赖zookeeper, 首先安装zookeeper -p&#xff1a;设置映射端口&#xff08;默认2181&#xff09; docker run --name zookeeper \--network app-tier \-e ALLOW_ANONYMOUS_LOGINyes \--restartalways \-d bitnami/zookeeper:latest2. 启动kafka docker…

C#上位机与欧姆龙PLC的通信13----【又爆肝】上位机应用开发(云端版)

1、概念背景 随着物联网技术的快速发展&#xff0c;工业互联网应运而生。工业互联网云平台作为连接智能制造和智慧工厂的重要技术手段&#xff0c;为制造业提供了更高效、更安全、更便捷的生产模式。工业互联网是指将互联网和物联网技术应用于工业生产和制造过程中&#xff0c;…

软考73-上午题-【面向对象技术2-UML】-UML中的图4

一、构件图&#xff08;组件图&#xff09; 1-1、构件图的定义 展现了&#xff0c;一组构件之间的组织和依赖。 构件图专注于系统的静态实现图。 构件图与类图相关&#xff0c;通常把构件映射为一个、多个类、接口、协作。 【回顾】&#xff1a; 类图展示了一组对象、接口、…

Vue中的组件:构建现代Web应用的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

07 数据结构之图

# Makefile CCgcc CFLAGS -g -Wall SRCStest.c graph.c link_queue.c OBJS$(SRCS:.c.o) #variable replace APPtestall:$(OBJS) #指定一个目标&#xff0c; 不然默认目标不会检查依赖文件的时间戳$(CC) $(SRCS) -o $(APP) .PH…

怎么写品牌方流量打造抖音运营规划方案

【干货资料持续更新&#xff0c;以防走丢】 怎么写品牌方流量打造抖音运营规划方案 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 抖音运营资料合集&#xff08;完整资料包含以下内容&#xff09; 目录 Step 1: 人货沟通策略 人群定位与细分 1. 从品牌及产品…

修改MonkeyDev默认配置适配Xcode15

上一篇文章介绍了升级Xcode15后&#xff0c;适配MonkeyDev的一些操作&#xff0c;具体操作可以查看&#xff1a;Xcode 15 适配 MonkeyDev。 但是每次新建项目都要去修改那些配置&#xff0c;浪费时间和精力&#xff0c;这篇文章主要介绍如何修改MonkeyDev的默认配置&#xff0…

AI写真,太火了

昨天晚上&#xff0c;AI大佬吴东子直播讲解了AI写真项目&#xff0c;说21点破局星球会准时放出预约链接&#xff0c;结果21点星球直接崩溃了&#xff0c;只能说这个项目太火爆了 经过星球授权&#xff0c;这里把整个项目的SOP截取一部分给到大家&#xff0c;完整的SOP太长了&am…

gradle下载太慢者超时!国内镜像可以直接下载

# 解决Gradle下载过慢问题的有效方式&#xff1a;使用国内镜像站点 在开发过程中&#xff0c;我们经常会遇到Gradle下载速度缓慢或超时的问题。作为一个强大而流行的构建工具&#xff0c;Gradle是许多项目中必不可少的一部分。然而&#xff0c;由于官方下载地址可能受网络限制…

【工具】Git的介绍与安装

目录 前言 1W&#xff1a;什么是Git&#xff1f; 2W&#xff1a;为什么使用Git&#xff1f; 3W&#xff1a;如何使用Git&#xff1f; Git的安装步骤 测试 3.1 桌面空白部分鼠标右击 3.2 选择 Open Git Bash here 3.3 输入 git -v 命令查看版本 Git区域分布 Git的工作…