《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
一、资源
题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:
0 <= matrix.length <= 100 0 <= matrix[i].length <= 100
注意:本题与主站 54 题相同:https://leetcode-cn.com/problems/spiral-matrix/
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。上代码(经过线上OJ测试)
import java.util.HashMap;/*** Created with IntelliJ IDEA.** @author : DuZhenYang* @version : 2022.03.01 18:01:48* description :*/ public class LeetCode {public int[] spiralOrder(int[][] matrix) {if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {return new int[0];}int[][] go = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};HashMap<Integer, int[]> direction = new HashMap<>();direction.put(0, go[0]);direction.put(1, go[1]);direction.put(2, go[2]);direction.put(3, go[3]);int m = matrix.length;int n = matrix[0].length;int total = m * n;boolean[][] visited = new boolean[m][n];int[] result = new int[total];int row = 0;int col = 0;int newDirection = 0;for (int i = 0; i < total; i++) {result[i] = matrix[row][col];visited[row][col] = true;int newRow = row + direction.get(newDirection % 4)[0];int newCol = col + direction.get(newDirection % 4)[1];if (newRow == m || newCol == n || newRow < 0 || newCol < 0 || visited[newRow][newCol]) {newDirection++;newRow = row + direction.get(newDirection % 4)[0];newCol = col + direction.get(newDirection % 4)[1];}row = newRow;col = newCol;}return result;} }
《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java相关推荐
- 剑指 Offer 29. 顺时针打印矩阵
题目 剑指offer的解题思路 顺时针打印矩阵,可以分解为每次打印一个数,顺序是从左到右,从上到下,然后从右到左,从下到上. 打印每一圈的起点(startX,startY)分别为(0,0),(1,1) ...
- 打印矩阵 java_【Java】 剑指offer(29) 顺时针打印矩阵
本文参考自<剑指offer>一书,代码采用Java语言. 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思路 每次打印矩阵最外面的一圈(用方法printMatrix ...
- 【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵
立志用最少的代码做最高效的表达 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2, ...
- leetcode剑指 Offer 29. 顺时针打印矩阵
一:题目 二:上码 class Solution {public:vector<int> spiralOrder(vector<vector<int>>& ...
- 【leetcode】剑指 Offer 29. 顺时针打印矩阵(shun-shi-zhen-da-yin-ju-zhen-lcof)(模拟)[简单]
链接 https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/ 耗时 解题:38 min 题解:10 min 题意 输入一 ...
- 【算法】剑指 Offer 29. 顺时针打印矩阵
1,概述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6
- 剑指offer——29.顺时针打印矩阵(不熟)
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 ...
- 剑指Offer(29)顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...
- 剑指offer 29 顺时针打印矩阵(可逆时针,任一点开始)
原书上写的解太麻烦了,而且还没有扩展性(比如从右上角开始打印,或者逆时针打印). 此外多个for循环的起止点也让人头晕,每个方向都要单独判断步进方向,因此代码也缺少优雅性. 这里我用direction ...
最新文章
- 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数...
- 【2021年】通过vue-cli创建electron项目
- mac mysql php_Mac搭建php开发环境:Apache+php+MySql
- SensorKernel层框架分析
- 全面认识UML-类图元素(java)
- 理解和使用SQL Server中的并行
- Spring源码入门——DefaultBeanNameGenerator解析
- 整理一些MongoDB常用数据库命令
- 教你成为全栈工程师(Full Stack Developer) 一-各显神通总结八大类编程语言的区别...
- php memcache数据类型,php读取memcache二进制数据
- 冰点还原精灵、影子系统区别哪个好
- 计算机主机中的硬件组成部分,电脑的硬件组成部分及其作用各是什么
- linux删除某条历史命令,如何从Linux/Unix Bash shell上删除历史记录中的一条命令?...
- HP刀片服务器系统Flex,HP刀片服务器系统Flex-10 VC配置与VMware vSphere网络设计
- 玩吧公司,入职近半年的感受
- 华为网络计算机关闭屏幕保护,华为手机的屏幕保护太烦人了怎样才能关闭它
- 类的定义,成员函数和内置成员函数
- 想想都脊背一凉,细思极恐,大家提早醒悟
- dell笔记本如何关闭计算机更新,联想戴尔笔记本Win10如何彻底永久关闭更新?
- 操作系统-动态内存分配算法
热门文章
- modelsim中仿真波形设置的保存
- 为什么说百度教育大脑3.0,是中国教育迎来的真正智慧大脑?
- python 爬预警没解析前的
- NopCommerce架构分析-依赖注入
- HTML5从入门到精通(明日科技) 中文pdf扫描版
- 民用报警服务技术浅谈
- 对textfield的键盘改造成滚动选择器而不是输入键盘
- [ASP.NET MVC3.0]Contact Manager 之迭代开发 一
- Android实现导航菜单随着ListView联动,当导航菜单遇到顶部菜单时停止在哪里,并且listview仍能滑动...
- c++,不能声明为虚函数的函数