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

客户案例 网站建设百度一下首页问问

客户案例 网站建设,百度一下首页问问,dw做的网站不显示,网站开发运营成本一、题目简介 题目链接: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://www.dtcms.com/wzjs/295432.html

相关文章:

  • 做网站的公司 苏迪网络推广产品要给多少钱
  • 宝安的医院网站建设百度竞价排名又叫
  • 阿里云网站备案多少天东莞全网推广
  • 怎么查看一个网站的后台友情链接交换
  • 做类似电影天堂的网站违法吗全网营销系统怎么样
  • 如何制作个人网站教程aso优化技术
  • wordpress 代码缩进免费seo快速排名工具
  • dede网站如何换源码短视频优化
  • 山东德州网站建设哪家最好站长工具seo查询
  • 网站建设锚点链接数据分析软件
  • 我想建个网站怎么建天津债务优化公司
  • 西安网站托管专业公司查看浏览过的历史记录百度
  • 福建工程建设管理中心网站网站设计公司报价
  • 网站建设注意事项seo自动优化软件下载
  • 如何自己开公众号优化网站链接的方法
  • 惠州建设局官方网站seo查询官方网站
  • 行业门户网站方案简单网站建设优化推广
  • 天津市住房建设委员会网站seo和sem哪个工资高
  • 儿童学做彩泥的网站怎么做市场推广
  • 上海网站seo优化杭州优化公司在线留言
  • 备案期间 需要关闭网站营销公司排名
  • 青海做网站哪家好站长seo工具
  • 深圳做网站商网络推广用什么软件好
  • 做网站属于什么备案如何网页优化
  • 北京网站制作业务如何开展头条今日头条新闻
  • wordpress最快仿站seo排名查询工具
  • 做的比较好的海鲜网站绍兴seo管理
  • 个人可以做导航网站吗百度网址链接
  • 上海市网站建设加盟长沙网站seo服务
  • 做网站提升公司形象常州网站关键词推广