【leetcode100-019】【矩阵】螺旋矩阵
【题干】
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

【思路】
- 不难注意到,每进行一次转向,都有一行/列被输出(并失效);
- 既然已经失效,那我们不妨就将这一行/列删去,当然并不是真的删去,其实只要让其无法再被访问(遍历)到就可以了;
- 那么我们是如何限定遍历的范围的呢,是给遍历指针设定上下界,因此,当我们不想让指针走到某一行/列,用上限把该行/列划到范围之外就可以了;
- 由于给出的不一定是方阵,所以要为行和列各设定两个变量用于记录当前可遍历范围的下界与上界;
- 当行方向或列方向之中的某一个范围已经变为0时,意味着矩阵中已经不再有可被遍历的元素,则我们的目的已经达成了。
【题解】
class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector <int> ans;if(matrix.empty()) return ans; //若数组为空,直接返回答案int u = 0; //赋值上下左右边界int d = matrix.size() - 1;int l = 0;int r = matrix[0].size() - 1;while(true){for(int i = l; i <= r; ++i) ans.push_back(matrix[u][i]); //向右移动直到最右if(++ u > d) break; //重新设定上边界,若上边界大于下边界,则遍历遍历完成,下同for(int i = u; i <= d; ++i) ans.push_back(matrix[i][r]); //向下if(-- r < l) break; //重新设定有边界for(int i = r; i >= l; --i) ans.push_back(matrix[d][i]); //向左if(-- d < u) break; //重新设定下边界for(int i = d; i >= u; --i) ans.push_back(matrix[i][l]); //向上if(++ l > r) break; //重新设定左边界}return ans;}
};
相关文章:
【leetcode100-019】【矩阵】螺旋矩阵
【题干】 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 【思路】 不难注意到,每进行一次转向,都有一行/列被输出(并失效);既然已经失效,那我…...
【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型
温故而知新,可以为师矣! 一、参考资料 《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman. 二、针孔模型相关介绍 1. 重要概念 1.1 投影中心/摄像机中心/光心 投影中心称为摄像机中心,也称为光心。投影中心位于一…...
轻量级Python IDE使用(三)——函数
1、函数 1.1、函数的概述 在程序设计中,函数的使用可以提升代码的复用率和可维护性。 系统内建函数pow()进行幂运算: a pow(2,4)自定义函数func() def func(a,b):return a ** b afunc(2,4) print(a)自定义函数func(),功能是输出a的b次幂 1.2、函数的定义 py…...
计算机图形学理论(3):着色器编程
本系列根据国外一个图形小哥的讲解为本,整合互联网的一些资料,结合自己的一些理解。 CPU vs GPU CPU支持: 快速缓存分支适应性高性能 GPU支持: 多个 ALU快速板载内存并行任务的高吞吐量(在每个片段、顶点上执行着色…...
ubuntu20.04安装timeshift最新方法
总结: 现在可以使用如下代码安装 sudo apt-get update sudo apt-get install timeshift原因: 在尝试Timeshift系统备份与还原中的方法时, sudo apt-add-repository -y ppa:teejee2008/ppa运行失败。 更改为以下代码: sudo a…...
小狐狸ChatGPT付费创作系统小程序端开发工具提示打开显示无法打开页面解决办法
最新版2.6.7版下载:https://download.csdn.net/download/mo3408/88656497 很多会员在上传小程序前端时经常出现首页无法打开的情况,错误提示无法打开该页面,不支持打开,这种问题其实就是权限问题,页面是通过调用web-v…...
DQL-基本查询
概念: 1,数据库管理系统一个重要功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示 2,MySQL提供了功能强大、灵活的语句来实现这些操作 3…...
漏洞复现-红帆OA iorepsavexml.aspx文件上传漏洞(附漏洞检测脚本)
免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…...
Leetcode 2976. Minimum Cost to Convert String I
Leetcode 2976. Minimum Cost to Convert String I 1. 解题思路2. 代码实现 题目链接:2976. Minimum Cost to Convert String I 1. 解题思路 这道题思路上其实是非常直接的,本质上就是给出有向图之后,求出有向图上任意两点之间的最短距离&…...
ZKP Mathematical Building Blocks (2)
MIT IAP 2023 Modern Zero Knowledge Cryptography课程笔记 Lecture 3: Mathematical Building Blocks (Yufei Zhao) Fiat Shamir heuristic Turn an interactive proof to a non-interactive proofP can simulate V whenever V picks a random valueP can simulate V’s ran…...
blender径向渐变材质-着色编辑器
要点: 1、用纹理坐标中的物体输出连接映射中的矢量输入 2、物体选择一个空坐标,将空坐标延z轴上移一段距离 3、空坐标的大小要缩放到和要添加材质的物体大小保持一致...
2023美团机器人研究院学术年会成功举办
2023年12月19日,深圳市美团机器人研究院学术年会在清华大学深圳国际研究生院成功落下帷幕。会议回顾了研究院成立一年来的进展和成果,并邀请了各界专家共同讨论机器人技术的未来发展趋势。此外,年会期间还举办了首届低空经济智能飞行管理挑战…...
swing快速入门(二十七)
注释很详细,直接上代码 上一篇 新增内容 1.为按钮指定图标 2. 列表框的并列 3.菜单项绑定快捷键 4.控件悬浮提示信息 5.菜单项设置小图标 6.五种布局风格右键选择切换 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.…...
Vue 封装echarts柱状图(Bar)组件
目的:减少重复代码,便于维护 显示效果 组件代码 <template><div class"ldw-data-content-box"><div class"ldw-chilren-box"><div class"title" v-if"title">{{ title }}</div>…...
异常(Java)
1.异常的概念 在 Java 中,将程序执行过程中发生的不正常行为称为异常 。 1.算数异常 System.out.println(10 / 0); // 执行结果 Exception in thread "main" java.lang.ArithmeticException: / by zero 2.数组越界异常 int[] arr {1, 2, 3}; System.out.…...
vue的插槽解析
插槽 好处:组件的内容结构可定制 用slot插槽进行占位 语法: 子组件中通过slot进行占位 理解:父组件,在子组件标签嵌套的内容就会被渲染到slot地方 一、默认插槽 //子组件 <slot>slot插槽</slot> //方法一<slot name"…...
Spring(3)Spring从零到入门 - Spring整合技术及AOP事务管理
Spring(3)Spring从零到入门 - Spring整合技术及AOP事务管理 文章目录 Spring(3)Spring从零到入门 - Spring整合技术及AOP事务管理4 Spring整合技术示例4.1 Spring整合Mybatis4.1.1 Mybatis开发回顾4.1.2 整合Spring分析4.1.3 Spri…...
适配器模式学习
适配器模式(Adapter)将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式分为类适配器模式和对象适配器模式两种,前者类之间的耦合度比后者高,且要…...
NET中使用Identity+CodeFirst+Jwt实现登录、鉴权
目录 前言 一、创建上下文类 1.自定义MyContext上下文类继承IdentityDbContext 2.在Program中添加AddDbContext服务 二、使用Migration数据迁移 1.在控制台中 依次使用add-migration 、updatebase 命令 2.如何修改表名 3.如何自定义字段 三、使用Identity实现登录、修改密码 …...
详解Keras3.0 API: Optimizers
Optimizers 优化器(Optimizer)是深度学习中用于更新模型参数的一种方法,它的目标是最小化损失函数。在训练神经网络时,我们通常使用梯度下降法来更新参数,而优化器就是实现这一过程的工具。优化器的主要作用是在每次迭…...
保姆级教程:用BERT微调一个智能家居语音助手的意图识别模型(含完整代码)
智能家居场景下的BERT意图识别实战:从数据标注到模型部署 想象一下,当你对家里的智能音箱说"把客厅灯调暗一点"时,设备能准确理解你的意图并执行操作。这种自然交互的背后,是意图识别技术在发挥作用。不同于通用对话系…...
电脑PC下载SMART200PLC和SMART 触摸屏程序的方法
西门子S7-200smartPLC和smart触摸屏通过本笔记本下载程序时,笔记本和smart触摸屏需完成相应设置,即笔记本电脑和smart触摸屏需通过固定IP通信下载程序,设置方法如下,本文档设置之前默认已将电脑、PLC和触摸屏通过RJ45接口网线连接…...
[特殊字符] Local Moondream2图文对话教程:详细步骤实现自定义问题提问
Local Moondream2图文对话教程:详细步骤实现自定义问题提问 1. 引言:让电脑拥有"眼睛"的智能工具 你是否曾经希望电脑能像人一样看懂图片,并且回答关于图片内容的问题?Local Moondream2就是这样一款神奇的工具&#x…...
FastAPI状态管理:FastAPI 全局状态管理的 3 种最佳实践
更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录 在构建生产级FastAPI应用时,全局状态管理是确保资源高效利用和系统稳定性的关键。不当的状态管理可能导致资源泄漏、线程安全问题和不可预测的行为。本文将深入分析FastAPI中实现全局状态的三种最佳实践,揭示其底层机…...
AI智能二维码工坊后端对接:REST API接入业务系统指南
AI智能二维码工坊后端对接:REST API接入业务系统指南 1. 为什么需要后端对接?——从界面操作到系统集成的跨越 你可能已经试过在AI智能二维码工坊的WebUI里点点鼠标:输入一段文字,几毫秒就生成一张高清二维码;上传一…...
内容解锁工具:突破信息壁垒的智能解决方案
内容解锁工具:突破信息壁垒的智能解决方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,知识获取的不平等现象日益凸显。当研究人员急…...
终极指南:5分钟上手BepInEx,打造你的Unity游戏插件帝国 [特殊字符]
终极指南:5分钟上手BepInEx,打造你的Unity游戏插件帝国 🚀 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款专为Unity游戏设计的强…...
从“偏科生”GPT-3到“全能选手”:聊聊MMLU基准如何推动大模型进化
从“偏科生”到“全能选手”:MMLU基准如何重塑大模型进化路径 当GPT-3在2020年以1750亿参数震惊世界时,人们很快发现这个"天才"存在明显的知识盲区——它在某些专业领域的表现堪比专家,却在另一些基础学科上失误频频。这种"偏…...
QT实战:用QScrollArea+QListWidget复刻迅雷设置界面(附完整源码)
QT实战:用QScrollAreaQListWidget复刻迅雷设置界面(附完整源码) 在桌面应用开发中,设置界面的设计往往考验着开发者对布局和交互逻辑的掌控能力。迅雷作为一款经典的下载工具,其设置界面以清晰的导航结构和流畅的滚动体…...
2023最新免费天气预报API接口推荐与使用指南
1. 2023年最值得尝试的免费天气预报API 天气预报API已经成为开发者工具箱里的常备工具,无论是做旅行App、外卖配送系统还是智能家居设备,实时天气数据都扮演着关键角色。我最近在开发一个户外运动提醒功能时,把市面上主流的免费天气接口都试了…...
