【LeetCode】剑指 Offer(11)

news2024/11/14 20:50:39

目录 

题目:剑指 Offer 29. 顺时针打印矩阵 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:剑指 Offer 29. 顺时针打印矩阵 - 力扣(Leetcode)

题目的接口:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        
    }
};

解题思路:

这道题的思路也比较简单,

就是实现起来对边界的控制能力要求比较高,

根据题意顺时针打印矩阵,

先判断该矩阵是否为空;

然后,

我们通过控制上右下左四个边界打印。

(设置四个变量作为下标访问矩阵)

根据这个顺序循环:

打印边界的值,然后更新边界;

打印边界的值,然后更新边界;

打印边界的值,然后更新边界;

打印边界的值,然后更新边界;

每次打印完都判断矩阵是否已经打印完成,

如果矩阵已经打印完成,就跳出循环,

返回打印的值即可。

代码:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        //建一个vector存放需要打印的值
        vector<int> v;

        //判断矩阵是否为空
        if(matrix.size() == 0)
        {
            return v;
        }

        //控制边界:

        //上边界
        int top = 0;

        //下边界
        int bottom = matrix.size() - 1;
        
        //左边界
        int left = 0;
        
        //右边界
        int right = matrix[0].size() - 1;

        //循环打印矩阵
        while(1)
        {
            //从左往右
            for(int i = left; i <= right; i++)
            {
                v.push_back(matrix[top][i]);
            }

            //更新上边界,并判断是否打印完成
            if(++top > bottom)
            {
                break;
            }

            //从上往下
            for(int i = top; i <= bottom; i++)
            {
                v.push_back(matrix[i][right]);
            }

            //更新右边界,并判断是否打印完成
            if(--right < left)
            {
                break;
            }

            //从右往左
            for(int i = right; i >= left; i--)
            {
                v.push_back(matrix[bottom][i]);
            }

            //更新下边界,并判断是否打印完成
            if(--bottom < top)
            {
                break;
            }

            //从下往上
            for(int i = bottom; i >= top; i--)
            {
                v.push_back(matrix[i][left]);
            }

            //更新左边界,并判断是否打印完成
            if(++left > right)
            {
                break;
            }   
        }
        
        //返回
        return v;
    }
};

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

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

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

相关文章

西电计算机通信与网络(计网)简答题计算题核心考点汇总(期末真题+核心考点)

文章目录前言一、简答计算题真题概览二、网桥&#xff0c;交换机和路由器三、ARQ协议四、曼彻斯特编码和差分曼彻斯特编码五、CRC六、ARP协议七、LAN相关协议计算前言 主要针对西安电子科技大学《计算机通信与网络》的核心考点进行汇总&#xff0c;包含总共26章的核心简答。 【…

华为OD机试模拟题 用 C++ 实现 - 自动曝光(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明自动曝光题目输入输出描述示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出࿰

Ubuntu搭建maven私服

1.安装JDK8 已经是JDK8的需要配置环境变量&#xff0c;如果是更高版本的JDK则需要修改nexus配置文件 2.下载nexus安装包 百度网盘下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1DfKqql8tZNQXEBxAEH7UyA 提取码&#xff1a;hx4p安装到有磁盘的目录如下所示&…

大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——Join多种应用

3.7.1Reduce Join 1、工作原理 Map端的主要工作&#xff1a;为来自不同表或文件的key/value对&#xff0c;打标签以区别不同来源的记录。然后用连接字段作为key&#xff0c;其余部分和新加的标志作为value&#xff0c;最后进行输出。 Reduce端的主要工作&#xff1a;在Reduc…

C++杂谈(一)

前言 本系列也是慢更系列&#xff0c;主要收纳一些还不够单独成系列的C的杂项问题&#xff0c;或是一些与C有关&#xff0c;但不属于核心知识的一些旁系问题。 关于C与C的关系 「学C要先学C吗&#xff1f;」 「C和C是不是完全不同的两个语言&#xff1f;」 「这个语法是C的还…

Nginx网站服务——Nginx虚拟主机(基于域名、IP、端口)附带超详细实验步骤

文章目录一、基于域名的nginx虚拟主机1、基于域名的nginx虚拟主机的操作步骤2、实例操作&#xff1a;基于域名的nginx虚拟主机二、基于IP的nginx虚拟主机1、基于IP的nginx虚拟主机的操作步骤2、实例操作&#xff1a;基于IP的nginx虚拟主机三、基于端口的nginx虚拟主机1、基于端…

EasyRecovery16支持恢复文档表格图片音视频等各种不同的数据

误删重要文件这样的事想必大家都不陌生&#xff0c;有时粗心起来可能经常会出现这样的事情。现代人的生活和工作基本离不开电脑等多媒体设备&#xff0c;每天需要处理的文件量和数据量也是呈指数增长&#xff0c;所以一款能够实现误删数据修复的软件可以说是当代人的电脑必装了…

TOSCA自动化测试工具

TOSCA由德国公司Tricentis研发&#xff0c;提供英文和德语两种版本。 目前他们的网上培训课程大约是2000一套&#xff0c;从初级到高级&#xff0c;从工程师到BA&#xff0c;有技术&#xff0c;也有测试管理。 TOSCA的思想是&#xff0c;不用会编程的测试人员可以直接上手自动…

RK3568平台开发系列讲解(驱动基础篇)SMP(Symmetrical Multi-Processing)

🚀返回专栏总目录 文章目录 一、linux SMP 和 AMP二、linux SMP的启动流程三、CPU的描述:cpumask四、CPU之间的关系沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 SMP(Symmetrical Multi-Processing)。 一、linux SMP 和 AMP 目前支持多核处理器的实时操…

RabbitMQ延迟队列

目录 一、概念 二、使用场景 三、RabbitMQ 中的 TTL &#xff08;一&#xff09;队列设置 TTL &#xff08;二&#xff09;消息设置 TTL &#xff08;三&#xff09;两者的区别 四、整合SpringBoot实现延迟队列 &#xff08;一&#xff09;创建项目 &#xff08;二&am…

使用vscode+picgo+腾讯云搭建本地markdown编辑环境

本文主要介绍如何配置本地markdown编辑环境&#xff0c;主要使用vscodepicgo腾讯云&#xff0c;vscode为微软提供的免费的编辑器&#xff0c;picgo用于将图片方便上传到云端并生成链接&#xff0c;腾讯云提供存储环境。markdown语法可参考官方文档. 环境 windows10vscode 编辑…

【LeetCode】剑指 Offer 18. 删除链表的节点(题目一) p119 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/ 1. 题目介绍&#xff08;18. 删除链表的节点&#xff09; 给定单向链表的头指针和一个要删除的节点的值&#xff0c;定义一个函数删除该节点。 返回删除后的链表的头节点。 注意&…

第52天|LeetCode84. 柱状图中最大的矩形

题目链接&#xff1a;84. 柱状图中最大的矩形 题目描述&#xff1a; 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 解法&#xff1a; ①此题求最大能…

Android开发 TextView

1.TextView控件 上一篇博客描述了安卓开发的整体结构&#xff0c;包括页面布局设计&#xff08;xml&#xff09;和程序逻辑设计(java&#xff09;&#xff0c; 开发一个APP&#xff0c;还需从最基础的控件入手&#xff0c;今天学习TextView控件 这是一个xml文件&#xff0c;描…

华为OD机试题,用 Java 解【压缩报文还原】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

vue 依赖注入使用教程

vue 中的依赖注入&#xff0c;官网文档已经非常详细&#xff0c;笔者在这里总结一份 目录 1、背景介绍 2、代码实现 2.1、依赖注入固定值 2.2、 依赖注入响应式数据 3、注入别名 4、注入默认值 5、应用层 Provide 6、使用 Symbol 作注入名 1、背景介绍 为什么会出现依…

h5: 打开手机上的某个app

1、android端&#xff1a;直接通过URL Scheme方式打开。2、ios端&#xff08;2种&#xff09;&#xff1a;&#xff08;1&#xff09;使用URL Scheme方式打开。&#xff08;2&#xff09;使用Universal link方式打开。3、Universal link方式使用注意事项&#xff1a;&#xff0…

IM即时通讯开发群聊消息的已读回执功能该怎么实现?

我们平时在使用即时通讯应用时候&#xff0c;每当发出一条聊天消息&#xff0c;都希望对方尽快看到&#xff0c;并尽快回复&#xff0c;但对方到底有没有真的看到&#xff1f;我却并不知道。一个残酷的现实是&#xff0c;很多时候对方其实是早就已经看到了这条消息&#xff0c;…

Java “框架 = 注解 + 反射 + 设计模式” 之 注解详解

Java ”框架 注解 反射 设计模式“ 之 注解详解 每博一文案 刹那间我真想令时光停住&#xff0c;好让我回顾自己&#xff0c;回顾失去的年华&#xff0c;缅怀哪个穿一身短小的连衣裙 和瘦窄的短衫的小女孩。让我追悔少年时代&#xff0c;我心灵的愚钝无知&#xff0c;它轻易…

【Eye】Fake News Reading on Social Media: An Eye-tracking Study

Fake News Reading on Social Media: An Eye-tracking Study Abstract 在网上传播假新闻&#xff08;以及一般的虚假信息&#xff09;最近被认为是威胁整个社会的一个主要问题。这种传播在很大程度上是由于新的媒体形式&#xff0c;即社交网络和在线媒体网站。研究人员和从业…