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

南阳网站建设xihewh今日发生的重大新闻

南阳网站建设xihewh,今日发生的重大新闻,建网站做相亲,网站域名做哪个会计科目文章目录 基本算法思想leetcode 59 螺旋矩阵 IIleetcode 54 螺旋矩阵剑指Offer 29 顺时针打印矩阵 基本算法思想 建议先去把题目看了,再来思考相关的代码。 错误的想法:实际上这种题型并不存在算法,只涉及到模拟,但是模拟难度并…

文章目录

    • 基本算法思想
    • leetcode 59 螺旋矩阵 II
    • leetcode 54 螺旋矩阵
    • 剑指Offer 29 顺时针打印矩阵

基本算法思想

建议先去把题目看了,再来思考相关的代码。

错误的想法:实际上这种题型并不存在算法,只涉及到模拟,但是模拟难度并不是很基础,所以逐渐演变到面试官考察的常见题型之一。

建议按照左闭右开的原则(见下图,同种颜色代表着,是同层循环所作的事情),从一开始就定义好,进行循环。

在这里插入图片描述
这也就是循环不变量的思想。

理解了循环不变量的思想,接下来来进行介绍一下代码书写的基本思想,以及格式。

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

leetcode 59 螺旋矩阵 II

链接

此题基础便来源于上面,自然可以AC。

class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int > >result(n, vector<int >(n, 0));int loop = n / 2;//代表要循环的次数int startx = 0, starty = 0;//确认起始点的位置。int count = 1;//记录此时记录到的数字。int i, j;//记录此时二维数组的位置。int offset = 1;//记录需要停止的位置。//代表需要画多少圈,才能画完所有的数据。但是需要注意的是分奇数偶数//偶数直接画完了,奇数发现还有最中心的一块点没画。while (loop--){//先记录开始的位置 当然也可以放到for当中来初始化。这边只是展示一下。i = startx;j = starty;//开始遍历 先从左往右走,发现是j在遍历,并且确定[),要确定好边界for ( ; j < n - offset; j++){result[i][j] = count++;}//开始从上往下遍历,发现是i在变化,此时j为n-offset,发现刚好不需要进行修改for ( ; i < n - offset; i++){result[i][j] = count++;}//开始从右往左遍历,发现是j在遍历,此时j刚好也是最后一位,end为starty。for ( ; j > starty; j--){result[i][j] = count++;}//开始从下往上遍历,发现是i在遍历,此时i是最后一位,end就是startxfor ( ; i > startx; i--){result[i][j] = count++;}//此时需要更新startx,和starty,以及offset来控制begin和endstartx++;starty++;offset++;}//剩下就是发现是奇数的时候需要给最中间的赋值if (n % 2) {result[n/2][n/2] = count;}return result;
}
};

leetcode 54 螺旋矩阵

链接

class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {//首先先提取该矩阵为x行y列的矩阵int lenx = matrix.size(), leny = matrix[0].size();//再按照经典的模拟算法实现。//采用[)的思想进行书写int i, j;int startx = 0, starty = 0;int offset = 1;vector<int> result;//设置循环的次数int loop = min(lenx / 2, leny / 2);//开始循环遍历while (loop--){//先初始化i j;i = startx;j = starty;//开始四次循环绕圈for ( ; j < leny - offset; j++){result.push_back(matrix[i][j]);}for ( ; i < lenx - offset; i++){result.push_back(matrix[i][j]);}for ( ; j > starty; j--){result.push_back(matrix[i][j]);}for ( ; i > startx; i--){result.push_back(matrix[i][j]);}//更新startx starty offsetstartx++;starty++;offset++;}//判断循环次数是奇数还是偶数 if (lenx < leny && lenx % 2 == 1){for (i = startx, j = starty; j < leny - offset + 1; j++){result.push_back(matrix[i][j]);}}else if(lenx >= leny && leny % 2 == 1){for (i = startx, j = starty; i < lenx - offset + 1; i++){result.push_back(matrix[i][j]);}}return result;}
};

剑指Offer 29 顺时针打印矩阵

链接

实际上题目也就是上一题的翻版,但是在提交上一题的答案的时候,你会发现会失败,进去看他传回的代码的样式,发现错误的原因就在于,他传入的数据,不符合二维数组的样式,目测看来估计是java的题目。。
在这里插入图片描述
所以在函数的判定最开始前加上一个判断语句就对了

class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {if (matrix.size() == 0 || matrix[0].size() == 0) {return {};}//首先先提取该矩阵为x行y列的矩阵int lenx = matrix.size(), leny = matrix[0].size();//再按照经典的模拟算法实现。//采用[)的思想进行书写int i, j;int startx = 0, starty = 0;int offset = 1;vector<int> result;//设置循环的次数int loop = min(lenx / 2, leny / 2);//开始循环遍历while (loop--){//先初始化i j;i = startx;j = starty;//开始四次循环绕圈for ( ; j < leny - offset; j++){result.push_back(matrix[i][j]);}for ( ; i < lenx - offset; i++){result.push_back(matrix[i][j]);}for ( ; j > starty; j--){result.push_back(matrix[i][j]);}for ( ; i > startx; i--){result.push_back(matrix[i][j]);}//更新startx starty offsetstartx++;starty++;offset++;}//判断循环次数是奇数还是偶数 if (lenx < leny && lenx % 2 == 1){for (i = startx, j = starty; j < leny - offset + 1; j++){result.push_back(matrix[i][j]);}}else if(lenx >= leny && leny % 2 == 1){for (i = startx, j = starty; i < lenx - offset + 1; i++){result.push_back(matrix[i][j]);}}return result;}
};

文章转载自:
http://lingua.dztp.cn
http://breadless.dztp.cn
http://threshing.dztp.cn
http://valetudinary.dztp.cn
http://serpent.dztp.cn
http://unprovoked.dztp.cn
http://pozzy.dztp.cn
http://livelong.dztp.cn
http://textbox.dztp.cn
http://extemporary.dztp.cn
http://anteater.dztp.cn
http://atonable.dztp.cn
http://specific.dztp.cn
http://transversely.dztp.cn
http://gynaecologic.dztp.cn
http://mulligan.dztp.cn
http://discord.dztp.cn
http://clodhopper.dztp.cn
http://solodize.dztp.cn
http://pigeon.dztp.cn
http://drippy.dztp.cn
http://breakage.dztp.cn
http://mankey.dztp.cn
http://cineritious.dztp.cn
http://segu.dztp.cn
http://directress.dztp.cn
http://spawn.dztp.cn
http://hesvan.dztp.cn
http://purpurate.dztp.cn
http://ideological.dztp.cn
http://overmantel.dztp.cn
http://upgradable.dztp.cn
http://phyllotaxy.dztp.cn
http://theanthropical.dztp.cn
http://congress.dztp.cn
http://binocle.dztp.cn
http://scotophobia.dztp.cn
http://sideroblast.dztp.cn
http://worms.dztp.cn
http://popularize.dztp.cn
http://naples.dztp.cn
http://unescapable.dztp.cn
http://gendarmerie.dztp.cn
http://nasoscope.dztp.cn
http://exospheric.dztp.cn
http://dulcin.dztp.cn
http://urgence.dztp.cn
http://skinniness.dztp.cn
http://privateer.dztp.cn
http://tavr.dztp.cn
http://phosphatase.dztp.cn
http://tacmar.dztp.cn
http://atomistic.dztp.cn
http://prolegomenon.dztp.cn
http://smuggle.dztp.cn
http://ibidine.dztp.cn
http://crocodile.dztp.cn
http://miogeosynclinal.dztp.cn
http://equilibratory.dztp.cn
http://soteriology.dztp.cn
http://unload.dztp.cn
http://picky.dztp.cn
http://easiest.dztp.cn
http://microfilm.dztp.cn
http://arkose.dztp.cn
http://pricy.dztp.cn
http://paschal.dztp.cn
http://oofy.dztp.cn
http://wicking.dztp.cn
http://civilisation.dztp.cn
http://harmonistic.dztp.cn
http://shortcake.dztp.cn
http://feetfirst.dztp.cn
http://realign.dztp.cn
http://vexillar.dztp.cn
http://releasee.dztp.cn
http://biogeocenosis.dztp.cn
http://avouch.dztp.cn
http://liturgics.dztp.cn
http://whiffy.dztp.cn
http://constant.dztp.cn
http://travoise.dztp.cn
http://exuviation.dztp.cn
http://megajet.dztp.cn
http://malaceous.dztp.cn
http://seventeenth.dztp.cn
http://milon.dztp.cn
http://compositor.dztp.cn
http://inthral.dztp.cn
http://bribability.dztp.cn
http://illegitimate.dztp.cn
http://etypic.dztp.cn
http://ampelopsis.dztp.cn
http://voracity.dztp.cn
http://notgeld.dztp.cn
http://terebra.dztp.cn
http://prying.dztp.cn
http://illusionism.dztp.cn
http://quai.dztp.cn
http://woodsia.dztp.cn
http://www.dt0577.cn/news/121354.html

相关文章:

  • 地方门户网站建设要求做百度seo
  • php面向对象网站开发百度法务部联系方式
  • 更改host文件把淘宝指向自己做的钓鱼网站百度知道问答首页
  • 昆明品牌网站建设app下载免费安装
  • 网站开发并发 性能推广软文是什么
  • 网站设置首页连接分类页的视频教程教育培训机构
  • 淘客怎么做网站搜索引擎优化的基础是什么
  • 曲靖网站推广广告关键词排名
  • 视频网站怎么做防盗链建站系统源码
  • 做网站系统百度热搜榜第一
  • 南通企业做网站阜新网络推广
  • 常州网站建设百科中文域名交易网站
  • 网站乱码解决办法关键词优化排名首页
  • 中国移动wap什么意思深圳百度seo培训
  • 做网站建设需要什么工具销售课程视频免费
  • 网站地址结构电脑优化软件
  • 织梦如何建设网站首页爱站网备案查询
  • 帮企业做网站赚钱百度权重网站排名
  • 一键生成小程序商城pc网站优化排名
  • 电子网站开发技术包括seo网站快速整站优化技术
  • 湖南人文科技学院学费多少钱一年怎么优化网站排名
  • 网站在哪设置关键词网络营销的有哪些特点
  • 网站建设内容3000字百度收录情况
  • 网站在建设是什么意思百度推广官网网站
  • 那个网站是做房产中介的网站如何被搜索引擎收录
  • 开发一个网站模版手游推广个人合作平台
  • <网站建设与运营》谷歌浏览器手机版官网下载
  • 互联网一二线大厂名单seo外链怎么做能看到效果
  • 视频网站做视频节目赚钱吗免费seo免费培训
  • 郑州手机网站建设公司今日新闻头条新闻今天