首页 > 代码库 > Spiral Matrix II
Spiral Matrix II
Spiral Matrix II
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 ]]
这道题接着上面那道题,是一个逆过程,只要稍微改一下就好了,因为上面一题螺旋式的遍历了整个数组,只要在遍历过程中将数字填进去就好了
1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.List; 4 5 6 7 public class Solution { 8 // List<Integer> result = new ArrayList<Integer>(); 9 int result[][];10 int count = 1;11 public int[][] generateMatrix(int n) {12 13 result = new int[n][n];14 if(0 == n)15 return result;16 spiralOrder(result);17 return result;18 }19 20 public void spiralOrder(int[][] matrix) {21 22 23 if(matrix.length == 1 && matrix[0].length == 1) //只有一个元素直接添加24 {25 matrix[0][0] = count++;26 }27 else if(matrix[0].length == 1){ //竖条28 for(int i = 0; i < matrix.length; i++){29 matrix[i][0] = count++;30 } 31 }32 else if(matrix.length == 1){ //横条33 for(int i = 0; i < matrix[0].length; i++){34 matrix[0][i] = count++;35 }36 }37 else {38 for(int i = 0; i < matrix[0].length; i++){ //添加第一排39 matrix[0][i] = count++;40 }41 for(int i = 1; i < matrix.length; i++){ //添加最后一竖42 matrix[i][matrix[0].length - 1] = count++;43 }44 for(int i = matrix[0].length - 2; i >= 0; i--){ //添加最后一排45 matrix[matrix.length - 1][i] = count++;46 }47 for(int i = matrix.length - 2; i >= 1;i--){ //添加第一排48 matrix[i][0] = count++;49 }50 if(matrix.length - 2 != 0 && matrix[0].length - 2 != 0){51 int next[][] = new int[matrix.length - 2][matrix[0].length - 2];52 spiralOrder(next); //递归求解下一个矩阵的值53 for(int i = 1; i < matrix.length - 1; i++){54 for(int j = 1; j < matrix[0].length - 1;j++){55 matrix[i][j] = next[i - 1][j - 1]; 56 }57 }58 59 }60 61 } 62 }63 }
Spiral Matrix II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。