Leetcode 54 spiral matrix II (螺旋矩阵)
2016-10-22 17:00
316 查看
一,问题描述
1,给定一个数n,以螺旋顺序产生一个具有n*n个元素的正方形矩阵。2,格式如下:
输入: 3
输出: [1 2 3]
[8 9 4]
[7 6 5]
输入:4
输出:[1 2 3 4]
[12 13 14 5]
[11 16 15 6]
[10 9 8 7].
3,解题思路:
第一, 这题的解题思路和第54题(spiral matrix)是相似的,这两题可以结合一起做的。
第二 ,这题的思路如下:
首先,一次循环如下:把数组的第一行从左到后赋值递增的数(1,2,…),然后再把数组最后一列从上到下赋值递增的数,然后再把数组的最后一行,从右到左赋值递增的数。最后把数组的第一列从下到上赋值递增的数。这是一次循环。然后行减去2行(就是第一行和最后一行),列减去2列(就是第一列和最后一列),继续上述的循环操作。直到赋值的数大于n*n。
二,AC了的程序(用Java实现的)
import java.util.*; public class Test2{ public int[][] generateMatrix(int n) { List<Integer> list=new ArrayList<Integer>(); int [][]data=new int ; if(n==0) { return data; } int hang=n; //表示行 int lie=n; //表示列 int temp=1; for(int i=0,j=0;i<hang&&j<lie;i++,j++) { //每一次循环完后,i和j各加1 for(int linlie=j;linlie<hang;linlie++) //当n=3时, 把数组的第一行从左到有存入1,2,3 { data[i][linlie]=temp; // System.out.println("data[+"+i+"][+"+linlie+"]="+data[i][linlie]); temp++; } for(int linhang=i+1;linhang<lie;linhang++) //把数组的最后一列从上到下存入 4,5 { data[linhang][hang-1]=temp; temp++; } for(int linlie=hang-2;linlie>=j&&i!=(hang-1);linlie--) //把数组的最后一行从右到左存入,6 7 { data[hang-1][linlie]=temp; temp++; } for(int linhang=lie-2;linhang>i&&j!=(lie-1);linhang--) //把数组的第一列,从下到上依次存入,8,(因为1已经存过 { data[linhang][j]=temp; temp++; } hang--; //然后行减去一 lie--; //列减去一, if(temp>n*n) { break; } } return data; } public static void main(String []args) { Test2 test=new Test2(); Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int [][]result=test.generateMatrix(n); for(int i=0;i<result.length;i++) { for(int j=0;j<result[i].length;j++) { System.out.print(result[i][j]+" "); } System.out.println(); } System.out.println(); } }
运行结果:
相关文章推荐
- LeetCode------54. Spiral Matrix(螺旋二维矩阵)-----59. Spiral Matrix II(n的螺旋矩阵)
- leetCode 54.Spiral Matrix(螺旋矩阵) 解题思路和方法
- LeetCode 54/59. Spiral Matrix i, ii
- 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
- leetCode 54.Spiral Matrix(螺旋矩阵) 解题思路和方法
- LeetCode54/59 Spiral Matrix I/II
- LeetCode 54. Spiral Matrix(螺旋矩阵)
- <LeetCode OJ> 54 / 59 Spiral Matrix( I / II )
- LeetCode 54. Spiral Matrix(螺旋矩阵Ⅰ)
- 54_leetcode_Spiral Matrix II
- 《leetcode》spiral-matrix-ii(构造螺旋矩阵)
- LeetCode 54. Spiral Matrix(螺旋矩阵)
- Leetcode刷题记——54. Spiral Matrix(螺旋矩阵)
- LeetCode | Spiral Matrix II(螺旋矩阵填充数据)
- LeetCode 54 Spiral Matrix(螺旋矩阵)(Array)(*)
- LeetCode Spiral Matrix II (生成螺旋矩阵)
- 牛客:剑指offer:顺时针打印矩阵 (Java)(同leetcode的spiral matrix i 和ii)
- Leetcode 54. Spiral Matrix (Medium) (cpp)
- LeetCode - 54/59 - Spiral Matrix(旋转打印数组)
- LeetCode: Spiral Matrix II