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

【剑指offer】顺时针打印矩阵

题目链接

acwing
leetcode

题目描述

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

数据范围矩阵中元素数量 [0,400]。

输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

解题

用偏移量的思想来做!
在这里插入图片描述

  1. 所以定义偏移量数组
    • dx[] = {-1, 0, 1, 0} //dx存x的偏移量
    • dy[] = {0, 1, 0, -1} //dy存y的偏移量
  2. 枚举四个方向的时候,for循环i从0开始枚举到<4
  3. 求枚举后的新的坐标 a=x+dx[i] b=y+dy[i]
  4. 什么时候更换方向:当越界或者a,b的下标已经存在值之后 更换方向

代码实现

class Solution {int[] dx = {0, 1, 0, -1};int[] dy = {1, 0, -1, 0};public int[] printMatrix(int[][] matrix) {// 初始方向int d = 0;int xlength = matrix.length;if(xlength == 0) return new int[0];int ylength = matrix[0].length;int[] res = new int[xlength * ylength];boolean[][] visit = new boolean[xlength][ylength];int x = 0, y = 0;for(int i = 0; i < xlength*ylength; i ++){visit[x][y] = true;res[i] = matrix[x][y];int xNext = x + dx[d];int yNext = y + dy[d];if(xNext < 0 || xNext >= xlength || yNext < 0 || yNext >= ylength || visit[xNext][yNext]){d = (d + 1) % 4;xNext = x + dx[d];yNext = y + dy[d];}x = xNext;y = yNext;}return res;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 1.Git快速入门
  • 数据结构/C++:位图 布隆过滤器
  • 测试缺陷定位的基本方法
  • MATLAB下载+安装教程
  • 如何应对Android面试官->进程通信如何注册与获取服务
  • 逐步学习Go-并发通道chan(channel)
  • 【动态规划】【卡特兰数】Leetcode 96. 不同的二叉搜索树
  • python面试题(1~10)
  • conda删除虚拟环境
  • 如何在MySQL中实现基于时间点的恢复?
  • 【深度学习】基础知识
  • 操作系统原理-模拟动态分区首次适应分配和回收算法——沐雨先生
  • Impala中操作Kudu表的语法
  • random模块篇
  • 完全二叉树的层序遍历[天梯赛]
  • @angular/forms 源码解析之双向绑定
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 07.Android之多媒体问题
  • Angular数据绑定机制
  • bootstrap创建登录注册页面
  • echarts花样作死的坑
  • leetcode讲解--894. All Possible Full Binary Trees
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • nginx 负载服务器优化
  • node入门
  • Odoo domain写法及运用
  • Protobuf3语言指南
  • Spring框架之我见(三)——IOC、AOP
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 携程小程序初体验
  • 优秀架构师必须掌握的架构思维
  • 移动端高清、多屏适配方案
  • #pragma 指令
  • (1)(1.9) MSP (version 4.2)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (bean配置类的注解开发)学习Spring的第十三天
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)hibernate配置管理
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (三)elasticsearch 源码之启动流程分析
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (一)80c52学习之旅-起始篇
  • (转)3D模板阴影原理
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET中GET与SET的用法
  • .py文件应该怎样打开?