Java螺旋矩阵处理方法详解

题目描述:

给定一 m*n 的矩阵,请按照逆时针螺旋顺序,返回矩阵中所有元素。

示例:

思路:

这是一道典型的模拟问题:

我们可以分析一下,遍历前进轨迹: 向右 - > 向下 -> 向左 -> 向上 -> 向右 …

于是,我们可以在循环中模拟这样的前进轨迹,记录 右,下,上左,四个边界,每次拐弯时更新边界值,再进行下一次拐弯,循环往复,直至结束。结束条件为 左边界加一大于右边界,或者上边界加一大于下边界。

图解:

代码:

class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> list = new ArrayList<Integer>(); // 思路: 注意上下左右边界 —— 走格子法(一直走,一直走,直到走完了,出去) int left = 0; int right = matrix[0].length - 1; int up = 0; int down = matrix.length - 1; if(right==-1 || down==-1){ return list; } while(true){ // 向右走 for(int i=left; i<=right; i++){ list.add(matrix[up][i]); } // 判断是否结束 if(up+1 > down){ break; } else{ up++; // 更新上边界 } // 向下走 for(int i=up; i<=down; i++){ list.add(matrix[i][right]); } // 判断是否结束 if(right - 1 < left){ break; } else{ right--; // 更新右边界 } // 向左走 for(int i=right; i>=left; i--){ list.add(matrix[down][i]); } // 判断是否结束 if(down-1 < up){ break; } else{ down--; // 更新下边界 } // 向上走 for(int i=down; i>=up; i--){ list.add(matrix[i][left]); } // 判断是否结束 if(left + 1 > right ){ break; } else{ left++; // 更新左边界 } } return list; } }

变式一: 题目描述:

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例:

代码:

class Solution { public int[][] generateMatrix(int n) { int[][] ans = new int[n][n]; int left = 0; int right = n - 1; int up = 0; int down = n - 1; int start = 1; while(true){ // 向右 for(int i=left; i<=right; i++){ ans[up][i] = start; start++; } if(++ up > down){ break; } // 向下 for(int i=up; i<=down; i++){ ans[i][right] = start; start++; } if(-- right < left){ break; } // 向左 for(int i=right; i>=left; i--){ ans[down][i] = start; start++; } if(-- down < up){ break; } // 向上 for(int i=down; i>=up; i--){ ans[i][left] = start; start++; } if(++ left > right){ break; } } return ans; } }

到此这篇关于Java螺旋矩阵处理方法详解的文章就介绍到这了,更多相关Java螺旋矩阵内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    miui模拟器电脑版|MIUI模拟器

    miui模拟器电脑版|MIUI模拟器,,1. MIUI模拟器笔记本电脑没有办法刷MIUI系统。MIUI系统是小米为手机研发的,基于安卓系统的手机用系统,笔记本

    雷蛇设置宏|雷蛇设置宏循环

    雷蛇设置宏|雷蛇设置宏循环,,雷蛇设置宏循环使用雷蛇软件设置宏驱动的方法如下:1、今天小编就以雷蛇鼠标为例,介绍宏定义的使用。当刚买的鼠

    拍拍模拟器电脑版|拍拍猴模拟器

    拍拍模拟器电脑版|拍拍猴模拟器,,1. 拍拍猴模拟器爬猴,5173,淘宝,拍拍,慧聪,易宝,送宝挺多的!我比较信任爬猴的 2. 拍拍拍模拟器游戏ppsspp还是相

    模拟器设置vt|模拟器设置VT

    模拟器设置vt|模拟器设置VT,,模拟器设置vtwin7安卓模拟器vt开启步骤如下:1.开启VT需要进入BOIS进行设置。首先重启电脑,在电脑启动时不停地

    计算机故障的处理方法

    计算机故障的处理方法,,在使用电脑的过程中,难免会遇到许多这些故障的原因突然故障可能是软件造成的,也可能是由硬件故障引起的,或其他保护因