当前位置: 首页 > 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;}
}
http://www.lryc.cn/news/326386.html

相关文章:

  • 推特社交机器人分类
  • openGauss增量备份恢复
  • Idea与DataGrip各版本通用破解码,无需脚本。
  • C++作业day6
  • mysql的单表、多表查询和数据类型
  • 中间件-消息队列
  • 一文get,最容易碰上的接口自动化测试问题汇总
  • Oracle:ORA-01830错误-更改数据库时间格式
  • 树状数组及应用
  • HarmonyOS 应用开发案例
  • 【C++ leetcode】双指针(专题完结)
  • 动态代理大总结
  • 理解Harris角点检测的数学原理
  • ETIM -国际贸易的产品分类标准
  • MySQL高阶SQL语句
  • 聊聊CSS
  • C语言 青蛙跳台阶问题
  • 【Django开发】前后端分离美多商城项目第3篇:用户部分,1. 后端接口设计:【附代码文档】
  • DHCP snooping、DHCP安全及威胁防范
  • 用eclipse创建Web项目,通过Servlet实现Web访问的功能。
  • tools.jar下载 Unable to create schema compiler
  • 【0278】checkpointer 共享内存(CheckpointerShmem)初始化(3)
  • 算法打卡day29|贪心算法篇03|Leetcode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果
  • 【hexo博客6】自定义域名 购买、配置、更新部署
  • Django使用pyJwt进行token校验
  • ❤️算法笔记❤️-(每日一刷-26、删除有序数组的重复项)
  • 银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载
  • Mybatis-核心配置文件 / Mybatis增删改查
  • Nginx(面试)
  • net::ERR_SSL_PROTOCOL_ERROR