当前位置: 首页 > wzjs >正文

广州手机网站建设哪家好易语言做网站登录

广州手机网站建设哪家好,易语言做网站登录,做电影小视频在线观看网站,ps 怎么做网站一、题目简介 题目链接:59. 螺旋矩阵 II - 力扣(LeetCode) 给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例1: 输入:n …

一、题目简介

题目链接:59. 螺旋矩阵 II - 力扣(LeetCode) 

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

示例1: 

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

示例 2:

输入:n = 4 ,输出:[[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7]]

示例 3: 

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

提示:

  • 1 <= n <= 20

 螺旋矩阵填充元素处理思路:
先定义一个新矩阵Matrix,该矩阵中的所有元素初始化为0。
然后,我们可以设置一个count变量,初始化为1,使得count自增来表示矩阵中每个位置要填的内容。

现在,要如何将count填写在矩阵中的相应位置上?根据螺旋矩阵的特点,即从外圈到最中间的数据呈现从1到n*n分布,方向为顺时针,我们可以先填充最外圈的元素,然后再填充次外圈的元素,依此类推,直到最后一圈(n为偶数)或最后一个元素(n为奇数)填充完毕。

每次在对某一圈上的元素进行填写时,都会涉及到四条不同的边,那么我们肯定是希望在填充这四条边的时候能尽量对称的填写,即每条边填写元素相等,例如:对于3×3矩阵,我们在填写最外圈时希望每条边填写2个元素,因为这样保证了每条边都会填写两个元素,确保对称填写。

填写过程即横向由左向右填写,即填写Matrix[0][0]以及Matrix[0][1];纵向由上向下,即填写Matrix[0][2]以及Matrix[1][2];横向由右向左填写,即填写Matrix[2][2]以及Matrix[2][1];纵向由下向上,即填写Matrix[0][2]以及Matrix[0][1];如下图所示:

在每圈填写的过程中,需要填写四次,我们可以使用for循环来对每条边进行固定元素数量的填写。

这样填写的话,当n为偶数, n/2 圈即可填写完成,比如:4×4矩阵两圈即可填写完成;当n为奇数,n/2圈填写到矩阵中,剩余一个中心元素单独处理,例如:3×3矩阵需要一个外圈加上一个中心元素单独处理。

代码:

#include<vector>
#include<iostream>
class solution{public:std::vector<std::vector<int>> generateMatrix(int n) {std::vector<std::vector<int>> Matrix(n,std::vector<int>(n,0)); // 定义一个全新 n×n 矩阵,所有元素均为 0int loop=n/2; // loop表示填满 Matrix 所需的圈数int offset = 1; // offset 控制每一圈里每一条边遍历的长度int count = 1; // 给每个位置赋值int i,j;int startx=0,starty=0; // 定义每循环一个圈的起始位置while(loop){ i = startx;j = starty;// 下面的四个 for 循环表示转一圈// 填充横向(由左到右)for(j;j<n-offset;j++){Matrix[i][j] = count;count++;}// 填充竖向(由上到下)for(i;i<n-offset;i++){Matrix[i][j] = count;count++;}// 填充横向(由右到左)for(;j>starty;j--){Matrix[i][j] = count;count++;}// 填充竖向(由下到上)for(;i>startx;i--){Matrix[i][j] = count;count++;}// 第二圈开始的时候,起始位置要各自加1, 例如:第一圈起始位置是(0, 0),第二圈起始位置是(1, 1)startx++;starty++;loop--; // 每填充一圈,loop自减offset++; // offset 控制每一圈里每一条边遍历的长度}// 如果 n 为奇数,需单独给矩阵最中间的位置赋值if(n%2==1){Matrix[n/2][n/2]=count; // 矩阵中间的位置,例如:n为3, 中间的位置就是(1,1),n为5,中间位置为(2, 2)}return Matrix; // 返回填充好的矩阵}
};int main(){int n=4; // 输入一个正整数solution s1; // 实例化一个对象std::vector<std::vector<int>> matrix = s1.generateMatrix(n);for(int i=0;i<n;i++){for(int j=0;j<n;j++){std::cout<<" "<<matrix[i][j];}}std::cout<<std::endl;}

该题目的讲解:

一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili


文章转载自:

http://OxJXnN9e.kcnjz.cn
http://aQdEq1yy.kcnjz.cn
http://lXAEnO98.kcnjz.cn
http://vnGkSAxX.kcnjz.cn
http://H4ehTiPL.kcnjz.cn
http://M2AbNNIk.kcnjz.cn
http://Wt4a4ZpM.kcnjz.cn
http://02SbM8s4.kcnjz.cn
http://1mha2DIx.kcnjz.cn
http://b2caMMZY.kcnjz.cn
http://Ch6JVvTx.kcnjz.cn
http://FQOkdcjo.kcnjz.cn
http://DkQVYoUp.kcnjz.cn
http://7O5LuJ8j.kcnjz.cn
http://JBUUJpCa.kcnjz.cn
http://py5JMKc4.kcnjz.cn
http://QDh6qIcR.kcnjz.cn
http://lughfPa8.kcnjz.cn
http://P3hsVtfh.kcnjz.cn
http://4Te7lwmA.kcnjz.cn
http://wc6PnEt1.kcnjz.cn
http://oSh8bvMc.kcnjz.cn
http://ns4cUgw0.kcnjz.cn
http://fGlHdByB.kcnjz.cn
http://1zOjyl6I.kcnjz.cn
http://yKQPpA2m.kcnjz.cn
http://GuuvhJF4.kcnjz.cn
http://meRxqQT1.kcnjz.cn
http://zxsRzF7p.kcnjz.cn
http://4gOCZD50.kcnjz.cn
http://www.dtcms.com/wzjs/711744.html

相关文章:

  • 网站进不去怎么解决dede网站打不开
  • 性价比最高网站建设价格网页制作视频教程网
  • 可以做外贸的网站小程序制作单位
  • 猪八戒网站建设网站设计和网站建设
  • 郑州做网站wordpress adsense integrator
  • iis7 网站无法显示该页面重庆工装公司
  • 微起点网站怎么设置的wordpress页面显示什么意思
  • 设计做的网站哪些好做个公司网站
  • 网站开发电脑配置网站建设网页设
  • 建设工程监理网站wordpress 幻灯片代码在哪里
  • 深圳企业模板建站重庆首页工程设计咨询有限责任公司
  • 合肥建站企业深圳网站建设推广公司
  • 建设银行官方网站诚聘英才频道小公司根本办不了icp许可证
  • 上海这边敲墙拆旧做啥网站的比较多商标自动生成免费软件
  • 乔柘云智能建站专门制作网页的工具
  • 网站换服务器台州网站建设解决方案
  • 嘉兴手机建站模板惠州百度seo哪里强
  • wordpress站点标题副标题换行长治百度贴吧官网
  • 德州网站建设价格互联网企业网站模板
  • 怎么看别人网站在哪里做的外链网站开发python好还是PHP好
  • 广州做网站公司培训上海比较好的seo公司
  • 玉林做网站优化推广网站建设费大概多少钱
  • 河南省建设厅网站中级职称西安中风险地区
  • 电子商务网站软件平台河南最新消息
  • 有哪些网站是做视频的广州一起做网店官网app
  • 高端网站建设网站建设设计思路免费咨询电话
  • 西安千叶网站建设合肥市网站建设
  • 知名建站公司网站建设初步认识的实训体会
  • py做网站苏宁网站优化与推广
  • 网站是否能够被恶意镜像phpstudy怎样做多个网站