Spiral Matrix II
来源:互联网 发布:lzw压缩算法的优缺点 编辑:程序博客网 时间:2024/04/29 09:54
Given an integer n, generate a square matrix filled with elements from 1 ton2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]
1. Works only for even n. 因为无法处理最后的中心数
public int[][] generateMatrix(int n) {// Start typing your Java solution below// DO NOT write main() functionint[][] res = new int[n][n];int max = n * n;int counter = 1;int layer = 0;while(true){for(int i = layer; i < n - layer - 1; i++){res[layer][i] = counter;counter++;}if(counter > max)break;for(int i = layer; i < n - layer - 1; i++){res[i][n - layer - 1] = counter;counter++;}if(counter > max)break;for(int i = n - layer - 1; i >= layer + 1; i--){res[n - layer - 1][i] = counter;counter++;}if(counter > max)break;for(int i = n - layer - 1; i >= layer + 1; i--){res[i][layer] = counter;counter++;}if(counter > max)break;layer++;}return res;}
2. 稍微处理下边角,通过。
public class Solution { public int[][] generateMatrix(int n) {// Start typing your Java solution below// DO NOT write main() functionint[][] res = new int[n][n];int max = n * n;int counter = 1;int layer = 0;while(true){for(int i = layer; i <= n - layer - 1; i++){res[layer][i] = counter;counter++;}if(counter > max)break;for(int i = layer + 1; i < n - layer - 1; i++){res[i][n - layer - 1] = counter;counter++;}if(counter > max)break;for(int i = n - layer - 1; i >= layer; i--){res[n - layer - 1][i] = counter;counter++;}if(counter > max)break;for(int i = n - layer - 2; i >= layer + 1; i--){res[i][layer] = counter;counter++;}if(counter > max)break;layer++;}return res;}}
3. Better coding style
public class Solution { public int[][] generateMatrix(int n) {// Start typing your Java solution below// DO NOT write main() functionint[][] res = new int[n][n];if (n == 0)return res;int num = 0;int layer = n / 2;for (int i = 0; i < layer; ++i) {int j;for (j = i; j < n - 1 - i; ++j)res[i][j] = ++num;for (j = i; j < n - 1 - i; ++j)res[j][n - 1 - i] = ++num;for (j = n - 1 - i; j > i; --j)res[n - 1 - i][j] = ++num;for (j = n - 1 - i; j > i; --j)res[j][i] = ++num;}if (n % 2 == 1)res[n / 2][n / 2] = ++num;return res;}}
- Spiral Matrix && Spiral Matrix II
- LeetCode: Spiral Matrix II
- LeetCode Spiral Matrix II
- [Leetcode] Spiral Matrix II
- LeetCode : Spiral Matrix II
- Spiral Matrix II
- [LeetCode] Spiral Matrix II
- Spiral Matrix II
- Spiral Matrix II
- [LeetCode]Spiral Matrix II
- Spiral Matrix II
- Spiral Matrix I(II)
- Spiral Matrix II
- [leetcode]Spiral Matrix II
- LeetCode-Spiral Matrix II
- [leetcode] Spiral Matrix II
- LeetCode - Spiral Matrix II
- Spiral Matrix II
- java.lang.OutOfMemoryError---at java.lang.StringBuilder.append
- <category android:name="android.intent.category.DEFAULT" /> 惹的祸
- no signatures that match those in shared user android.uid.system; ignoring!
- android xml: xliff:g
- Oracle学习(8)--Linux系统的VI编辑器常用命令、linux中使用ftp上传文件
- Spiral Matrix II
- PCL学习笔记(二)PCD文件格式
- scp批量上传文件到多台机器上(升级版)
- android音频口通信——2FSK信号调制
- Android九环刀之RatingBar之评委请亮分
- 计算机专业学生如何度过大学
- 注释解析类
- Permutation Sequence
- 篡改Junit的@Test注释