【Leetcode】Spiral Matrix 一 和 二 in JAVA
来源:互联网 发布:java是什么 编辑:程序博客网 时间:2024/06/05 09:03
首先是1:
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]
You should return [1,2,3,6,9,8,7,4,5]
.
这里有一个问题,由于m和n很有可能不一样,所以不一样while转一圈才能跳出循环,所以每一个for循环后要判断是否要跳出break。
package testAndfun;import java.util.ArrayList;import java.util.List;public class spriralOrder {List<Integer> list = new ArrayList<Integer>();public static void main(String[] args){spriralOrder so = new spriralOrder();int[][] m = {{1,2,3},{4,5,6},{7,8,9}};//int[][] m = {{2,3}};System.out.println(so.spiralOrders(m).toString());}public List<Integer> spiralOrders(int[][] matrix) {if(matrix.length==0 || matrix[0].length==0)return list; int moveStep = 0; int m = matrix[0].length; int n = matrix.length; int x=0,y=-1; while(moveStep!=matrix.length*matrix[0].length){ for(int i=0;i<m;i++){ list.add(matrix[x][++y]); moveStep++; } if(moveStep==matrix.length*matrix[0].length)break; for(int i=0;i<n-1;i++){ list.add(matrix[++x][y]); moveStep++; } if(moveStep==matrix.length*matrix[0].length)break; for(int i=0;i<m-1;i++){ list.add(matrix[x][--y]); moveStep++; } if(moveStep==matrix.length*matrix[0].length)break; for(int i=0;i<n-2;i++){ list.add(matrix[--x][y]); moveStep++; } n = n-2; m = m-2; } return list; }}
然后是2:
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]我的思路与上一题一样,向右n,向下n-1,向左n-1,向上n-2,然后再更新n = n - 2;直到往二维数组里输入了moveStep == n*n
package testAndfun;import java.util.Arrays;public class SpiralMatrix {public static void main(String[] args){SpiralMatrix sm = new SpiralMatrix();System.out.println(Arrays.deepToString(sm.generateMatrix(3)));}public int[][] generateMatrix(int n) {int[][] out = new int[n][n]; if(n<=0) return out; int x=0; int y=-1; int moveStep = 0; while(moveStep != n*n){ for(int i=0;i<n;i++){ out[x][++y] = ++moveStep; } for(int i=0;i<n-1;i++){ out[++x][y] = ++moveStep; } for(int i=0;i<n-1;i++){ out[x][--y] = ++moveStep; } for(int i=0;i<n-2;i++){ out[--x][y] = ++moveStep; } n = n-2; } return out;}}
0 0
- 【Leetcode】Spiral Matrix 一 和 二 in JAVA
- [Leetcode] Spiral Matrix (Java)
- [LeetCode][Java] Spiral Matrix
- leetcode:Spiral Matrix 【Java】
- [Leetcode] Spiral Matrix II (Java)
- LeetCode – Spiral Matrix (Java)
- [LeetCode][Java] Spiral Matrix II
- leetcode:Spiral Matrix II 【Java】
- leetcode-java-54. Spiral Matrix
- (Java)LeetCode-54. Spiral Matrix
- [leetcode]54. Spiral Matrix(Java)
- 【LeetCode-Java】54. Spiral Matrix+59. Spiral Matrix II
- leetcode之Spiral Matrix 和Spiral Matrix II
- leetcode-java-59. Spiral Matrix II
- (Java)LeetCode-59. Spiral Matrix II
- Leetcode 54. Spiral Matrix (Medium) (java)
- Leetcode 59. Spiral Matrix II (Medium) (java)
- LeetCode 54 (Spiral Matrix)Java
- [math][第二阶段-easy math][HDU-2136]Largest prime factor
- LeetCode--Recover Binary Search Tree
- hdu 2035 人见人爱A^B
- CentOS6.5系统下安装Apache2.4+PHP5.6+Mysql5.5 (LAMP)
- 仙剑奇侠传开源项目 sdlpal
- 【Leetcode】Spiral Matrix 一 和 二 in JAVA
- hashtable HashMap相关问题
- Redis对对象的操作
- Activiti学习入门(5) -- 学习完成指定的任务
- 无题
- ctags支持lua和protobuf
- RSA密钥文件(大整数的质数分解) (公钥)modulus+publicExponent (私钥)modulus+privateExponent
- 【C++ Primer】【学习笔记】【第八章】标准IO库之:条件状态
- Addnode.sh失败,日志文件报错PRKC-1025 & java.lang.OutOfMemoryError: Java heap space