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

网站建设相关文章网站开发常用哪几种语言

网站建设相关文章,网站开发常用哪几种语言,团员注册网站,学做ppt的网站 免费一、题目简介 题目链接: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/a/436906.html

相关文章:

  • 做网络投票网站好做吗网络推广公司怎么接单
  • 沈阳网站建设21anshan科技感设计感的展厅
  • 企业网站报价模板下载制作网页网站
  • 西安哪个公司可以做网站网站培训中心
  • 专业模板建站软件wordpress笔记主题
  • 通过模板做网站手机网站方案
  • 网站建设最新技术及发展趋势wordpress显示选项取消了吗
  • 深圳哪家网站建设的公司好例点估算网站开发项目工作量
  • 金融营销的网站设计案例中国建设银行网站会员注册
  • 影楼网站模版中国四大门户网站分别是
  • 手机网站 制作教程wordpress旅游社区
  • 淘客做网站有必要吗手机网页免费制作app
  • 建立网站后怎样收费上海网站建设托管
  • 做网站百度收费吗电子商务网站开发策划
  • 衡水电子网站建设自媒体seo是什么意思
  • 民治网站建设毛衣品 东莞网站建设
  • 环保局网站建设wordpress更改文章宽度
  • 【LINUX学习】“su:鉴定故障”和“用户不在sudoers文件中。此事将被报告。”同时出现的解决方法
  • 湖南网络营销企业中山seo网络推广
  • 青岛做网站推广公司建设网站的平台
  • 国外网站建设接单WordPress单页添加Js
  • 网站建设外地便宜成都高速公路网站建设招标
  • 珠海定制网站建设推广网站建设推广关键词
  • 资中网站建设淄博做网站公司
  • 第一次做网站做什么比较好wordpress 后台 324
  • 原网站备案在哪杭州盘石做网站专业吗
  • c++语言做网站电脑云主机
  • 业余做衣服的网站建立一个网站的费用
  • 陕西中交基础建设有限公司网站wordpress现在流行吗
  • 网站建设公司muyunke徐州网站建设xzqjwl