算法训练第六十五天|螺旋遍历二维数组

LCR 146. 螺旋遍历二维数组 - 力扣(LeetCode)

总结:本质是模拟一个螺旋的过程,其中关键是如何限制边界条件或者说是循环结束条件。题目要求是按从左到右、从上到下、从右到左、从下到上的顺序,所以可以设置循环来完成,然后对其中的边界进行界定。

代码:

class Solution {
public:vector<int> spiralArray(vector<vector<int>>& array) {vector<int> res;if(array.size() == 0)return res;int l = 0;int r = array[0].size() - 1;int t = 0;int b = array.size() - 1;while(true){for (int i = l; i <= r; i++) res.push_back(array[t][i]);if (++t > b) break;for (int i = t; i <= b; i++) res.push_back(array[i][r]);if (--r < l) break;for (int i = r; i >= l; i--) res.push_back(array[b][i]);if (--b < t) break;for (int i = b; i >= t; i--) res.push_back(array[i][l]);if (++l > r) break;}return res;}
};

这里要提一下另一道题目:59. 螺旋矩阵 II - 力扣(LeetCode)

这两道题目都比较相似,都是模拟一个螺旋的过程,主要区别在于第二道题的螺旋矩阵一定是一个正方形,在解题方法上也有些许区别,相同点是都是利用循环来完成,不同点是第一种更妙。

代码:

class Solution {
public:vector<vector<int>> generateMatrix(int n) {int loop = n / 2;int mid = n / 2;int startx = 0;int starty = 0;int offset = 1;int i,j;int count = 1;vector<vector<int>> res(n, vector<int>(n, 0));while(loop){i = startx;j = starty;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++;startx++;starty++;offset++;loop--;}if(n % 2 != 0)res[mid][mid] = n * n;return res;}
};

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

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

相关文章

面向面试知识-Redis

面向面试知识-Redis 什么是Redis 运行于内存的基于key-value的非关系型数据库。 一款开源的内存数据结构存储&#xff0c;用作数据库、缓存、消息代理等。&#xff08;可以基于Redis实现分布式锁、以及消息队列&#xff09; 发布订阅&#xff1f;&#xff1f; 对数据类型的操…

[Firefox/快捷键] 禁用Ctrl-W快捷键

最近给Firefox这一快捷键坑了几次。恰好发现在CMU也有人遇到类似的烦恼&#xff0c;找到一篇基于Linux的教程。 我使用的是Windows&#xff0c;所以根据自己的情况做了些修改&#xff0c;成功了。小众需求就犯懒直接将笔记贴上了&#xff0c;如果有谁用得上的话&#xff0c;我写…

消息队列中,如何保证消息的顺序性?

本文选自&#xff1a;advanced-java 作者&#xff1a;yanglbme 问&#xff1a;如何保证消息的顺序性&#xff1f; 面试官心理分析 其实这个也是用 MQ 的时候必问的话题&#xff0c;第一看看你了不了解顺序这个事儿&#xff1f;第二看看你有没有办法保证消息是有顺序的&#xf…

聊聊jedis连接池参数配置

序 本文主要研究一下jedis连接池的参数配置 JedisConfig redis/clients/jedis/JedisPoolConfig.java public class JedisPoolConfig extends GenericObjectPoolConfig<Jedis> {public JedisPoolConfig() {// defaults to make your life with connection pool easier…

STL map,插入和查找的一些注意事项

01、前言&#xff08;废话&#xff09; C 的 std::map 容器中插入键值对主要有myMap(std::make_pair(key value)) &#xff0c;它们的区别你了解吗&#xff1f; auto it myMap,find(key) 和 auto value myMap[key] 都可以用于在 C 的 std::map 容器中查找键对应的值&#xff…

Spring Boot的新篇章:探索2.0版的创新功能

文章目录 引言1. Spring Boot 2.0的响应式编程2. 自动配置的改进3. Spring Boot 2.0的嵌入式Web服务器4. Spring Boot 2.0的Actuator端点5. Spring Boot 2.0的Spring Data改进6. Spring Boot 2.0的安全性增强7. Spring Boot 2.0的监控和追踪8. Spring Boot 2.0的测试改进结论 &…

6、SpringBoot_项目的打包与运行

七、SpringBoot项目的打包与运行 1.目前项目怎么运行的 通过浏览器访问idea 将jar部署到服务器 2.maven 打包项目 命令 mvn package使用命令后会得到如下的jar 3.程序运行 命令 java -jar 项目.jar启动如下 4.springboot打包需要插件 插件 <plugin><group…

c++源码编译过程(翻译阶段)的若干细节概要

c程序的编译主要包含两个阶段&#xff1a;源码编译(翻译阶段)和目标文件链接。 源码编译过程主要有如下这些阶段&#xff1a; 阶段1: 翻译源码文本字符 阶段2: 逻辑源码行标准化处理 阶段3: 文法处理&#xff0c;分解为不同的源码文本类型序列。例如分解为注释、预处理指…

从零学习开发一个RISC-V操作系统(二)丨GCC编译器和ELF格式

本篇文章的内容 一、GCC&#xff08;GUN Compiler Collection&#xff09;1.1 GCC的命令格式1.2 GCC的主要执行步骤1.3 GCC涉及的文件类型 二、ELF简介2.1 ELF文件格式图2.2 ELF文件处理的相关工具2.3 练习 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记&…

机器学习第十四课--神经网络

总结起来&#xff0c;对于深度学习的发展跟以下几点是离不开的: 大量的数据(大数据)计算资源(如GPU)训练方法(如预训练) 很多时候&#xff0c;我们也可以认为真正让深度学习爆发起来的是数据和算力&#xff0c;这并不是没道理的。 由于神经网络是深度学习的基础&#xff0c;学…

debug过程中,矩阵左乘右乘相关概念梳理

1. 变换点或者变换向量 1.1左乘 矩阵左乘通常是指对”目标点“进行左乘&#xff0c;即: A ′ R ∗ A AR*A A′R∗A 其中&#xff0c;A为原始3维点&#xff0c;表示一个3*1的列向量&#xff0c;R为33的旋转矩阵&#xff0c;A‘为变换后的点 B ′ T ∗ B BT*B B′T∗B 其中…

uniapp存值和取值方法

在UniApp中&#xff0c;可以使用全局变量、本地缓存和Vuex状态管理等方式来进行存值和取值。 全局变量&#xff1a;可以在App.vue文件的data中定义一个全局变量&#xff0c;在其他页面或组件中通过uni.$emit方法修改其值&#xff0c;并通过uni.$on方法监听值的变化。 // App.…

The 2023 ICPC Asia Regionals Online Contest (1) E. Magical Pair(数论 欧拉函数)

题目 T(T<10)组样例&#xff0c;每次给出一个n(2<n<1e18)&#xff0c; 询问多少对&#xff0c;满足 答案对998244353取模&#xff0c;保证n-1不是998244353倍数 思路来源 OEIS、SSerxhs、官方题解 2023 ICPC 网络赛 第一场简要题解 - 知乎 题解 官方题解还没有…

pip修改位于用户目录下的缓存目录

默认 pip 缓存目录&#xff1a; Windows: C:\Users\${用户名}\AppData\Local\pip\cache Linux: ~/.cache/pip 一、修改方式 1.命令方式 pip config set global.cache-dir "D:\kwok\data\pip-cache" 2.配置文件方式 ① Windows&#xff1a; C:\Users\${用…

SpringBoot2.7.14整合Swagger3.0的详细步骤及容易踩坑的地方

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Sp…

docker系列:dockerfile及其用法解析

docker系列 关于dockerfile的简介 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/133201059 【介绍】&a…

Portainer -- docker轻型可视化工具

安装和使用 Portainer 非常简单。下面是一些基本步骤&#xff1a; 安装 Docker&#xff1a;Portainer 是一个基于 Docker 的官方容器管理工具&#xff0c;因此首先要确保你的系统上已经安装了 Docker。你可以根据你的操作系统选择合适的方式安装 Docker。 安装 Portainer 容器…

指针笔试题详解

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2.指针题写出下列程序的结…

记一次逆向某医院挂号软件的经历

背景 最近家里娃需要挂专家号的儿保&#xff0c;奈何专家号实在过于抢手&#xff0c;身为程序员的我也没有其他的社会资源渠道可以去弄个号&#xff0c;只能发挥自己的技术力量来解决这个问题了。 出师不利 首先把应用安装到我已经 Root 过的 Pixel 3 上面&#xff0c;点击应…

【重新定义matlab强大系列十五】非线性数据拟合和线性拟合-附实现过程

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…