剑指Offer-29-顺时针打印矩阵

剑指Offer-29题

题目描述:顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

image.png

**题解思路:**使用 模拟 的方法

  1. 定义四个边界变量表示当前要遍历的边界:上(top)、下(bottom)、左(left)、右(right),条件结束的标志是[上边界<=下边界 且 左边界<=有边界]
  2. 再顺时针打顺序依次遍历矩阵的每一圈,并将每一个遍历到的元素添加到列表中,并更新边界的位置,继续下一轮的遍历,遍历顺序为:
    • 从左到右
    • 从上到下
    • 从右到左
    • 从下到上

代码如下:

class Solution {/*** 解题思路:使用 模拟 的方法*/public int[] spiralOrder(int[][] matrix) {List<Integer> list = new ArrayList<>();if (matrix.length == 0 || matrix[0].length == 0 || matrix == null) return list.stream().mapToInt(Integer::intValue).toArray();//定义四个边界:上、下、右、左int top = 0, bottom = matrix.length-1, left = 0, right = matrix[0].length-1;while (top<=bottom && left<=right){//从左至右遍历for (int i=left;i<=right;i++){list.add(matrix[top][i]);}top++;//最上面一行遍历结束,向下移一行//从上到下遍历for (int i=top;i<=bottom;i++){list.add(matrix[i][right]);}right--;//最右边一列遍历结束,向左移一列//查看是否有剩余if (top<=bottom && left<=right){//从右向左遍历for (int i=right;i>=left;i--){list.add(matrix[bottom][i]);}bottom--;//最下面的一行遍历结束,向上移一行//从下到上遍历for (int i=bottom;i>=top;i--){list.add(matrix[i][left]);}left++;//最左边一列遍历结束,向右移一列}}return list.stream().mapToInt(Integer::intValue).toArray();//将 list->int[]}
}

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

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

相关文章

ActiveMQ详细入门教程系列

一、什么是消息中间件 两个系统或两个客户端之间进行消息传送&#xff0c;利用高效可靠的消息传递机制进行平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型&#xff0c;它可以在分布式环境下扩展进程间的通信。 消息中…

【vue学习】权限管理系统前端实现6-主页面布局

1.新建layout文件夹 新建index.vue 添加router const routes [{path: /,name: 首页,component: () > import(../layout)}, 2.登录添加跳转 loginRef.value.validate(async (valid)>{if(valid){try{let resultawait requestUtil.post("login?"qs.stringify(l…

交通 | 针对Close-Enough旅行商问题的一种分支定界算法

论文解读​&#xff1a;王飞龙&#xff0c;曲晨辉 1、问题背景 \qquad 旅行商问题(TSP)是一种众所周知的路径问题。TSP的目标是在图 G ( V , E ) G(V,E) G(V,E)中找一条以场站为起终点的最短路&#xff0c;访问所有客户点 V V V&#xff0c;同时没有子环路。令 E E E表示网络中…

达梦数据库性能分析

目录 数据库常用性能分析方法... 3 一、服务器监控... 3 1、cpu监控... 3 2、内存... 3 3、swap内存... 3 4、磁盘... 4 5、网络监测... 4 二、数据库实例监控... 6 1、v$sessions. 6 2、慢sql、阻塞、锁... 7 3、内存监控... 10 4、monitor监控工具使用及开启sql日…

Matlab画两个三维曲面在一个画布

clc;clear;close all; data xlsread(Brent等厚度.xlsx); x data(:,1) xmax max(x); xmin min(x); y data(:,2) ymax max(y); ymin min(y); z data(:,3); z1 data(:,4); N 45; …

AI绘画:StableDiffusion炼丹Lora攻略-实战萌宠图片生成

Lora攻略-实战萌宠图片生成 写在前面的话一&#xff1a;准备二、Lora作用1.AI模特2.炼衣服Lora3.改变画风/画面背景Lora模型究竟是什么&#xff1f; 三、如何炼制自己的Lora模型&#xff1f;四、炼丹前的准备&#xff08;**下载整合包**&#xff09;五、选择合适的大模型六、高…

win go vscode安装配置-智能提示

win go vscode安装配置-智能提示 0.前提 go1.17.1之后不允许go get安装库 vscode是免费的go开发工具&#xff0c;想要代码智能提示 go推荐go mod和go install&#xff0c;不推荐GOPATH了 1.安装步骤 [1] vscode安装-百度一堆 [2] go安装-从官网 https://go.dev/dl/ 下载win 6…

SpringBoot——在测试阶段验证Web表现层的接口是否正常

验证请求状态 之前我们实现了在测试环境中开启Web环境&#xff0c;并且在测试阶段发送虚拟请求&#xff0c;并看到了返回的结果&#xff0c;这次我们不止要看他的请求结果&#xff0c;还要看他的请求过程和请求状态 匹配请求状态 首先就是查看请求的状态。主要介绍的就是一个…

使用Vue脚手架

(193条消息) 第 3 章 使用 Vue 脚手架_qq_40832034的博客-CSDN博客 初始化脚手架 说明 1.Vue脚手架是Vue官方提供的标准化开发工具&#xff08;开发平台&#xff09; 2.最新的版本是4.x 3.文档Vue CLI脚手架&#xff08;命令行接口&#xff09; 具体步骤 1.如果下载缓慢…

短视频抖音seo矩阵系统源码:技术开发与实践(三)

一、 技术开发文档说明 1. 系统架构 短视频抖音seo矩阵源码部署功能架构包含&#xff1a;多模式视频剪辑&#xff0c;视频批量处理、文字转语音、视频批量发布、多平台账号管理、 智能在线客服、粉丝画像及数据统计分析、抖音seo排名优化采集等。 2. 抖音seo排名系统模块组成…

三张表学会MySQL的单表操作!

表单一信息 1、查询表中所有学生的信息 mysql> select * from student; 2、 查询表中所有学生的姓名和英语成绩 mysql> select name,english from student; 3、过滤表中的重复数据 mysql> select DISTINCT * from student; 4、统计每个学生的总分 mysql> sele…

[CVPR‘23] PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 deg

论文&#xff5c;项目 总结&#xff1a; 任务&#xff1a;3D human head synthesis现有问题&#xff1a;GANs无法在「in-the-wild」「single-view」的图片情况下&#xff0c;生成360度人像解决方案&#xff1a;1&#xff09;提出了two-stage self-adaptive image alignment&am…