Spiral Matrix II
来源:互联网 发布:访客网络要开启吗 编辑:程序博客网 时间:2024/05/29 10:34
Given an integer n, generate a square matrix filled with elements from 1 to n^2 in spiral order.
For example,
Given n = 3,
You should return the followingmatrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路:本题的关键在于,在以螺旋顺序迭代二维数组的时候,如何求出每次迭代的二维数组索引。螺旋顺序为上、右、下、左。本题的解法是,以k代表二维数组的层数,比如以一个4*4的二维数组为例:
1, 2, 3, 4
5, 6, 7, 8
9, 10,11,12
13,14,15,16
第0层的螺旋顺序为:1,2,3,4,8,12,16,15,14,13,9,5。
第1层的螺旋顺序为:6,7,11,10.
代码如下:
int** generateMatrix(intn){ int i, j, k; int index; int **res = calloc(n,sizeof(int *)); int reslen = n * n; for(i = 0; i <n; i++) { res[i] = calloc(n,sizeof(int)); } index = 1; i = j = k = 0; while(index <= reslen) { res[i][j] =index++; if(index > reslen) break; if(i == k) { j++; if(j < n-k)continue; j--; } if(j == n-k-1) { i++; if(i < n-k)continue; i--; } if(i == n-k-1) { j--; if(j >= k) continue; j++; } if(j == k) { i--; if(i == k) { i = j = ++k; } } } return res;}
0 0
- 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
- ...
- Python之requests的安装
- input新特性的带来的便捷
- float,double在内存中的存储方式
- Android Studio导入本地jar包,本地library库,maven库相关方法
- Spiral Matrix II
- 剑指off-求1到n的代数和
- 寄售业务的SAP标准流程
- 【C++/数据结构】循环链表的基本操作
- poj2280--Amphiphilic Carbon Molecules(扫描线+极角排序+转换坐标)
- contiki_protothread源码
- Note For Linux By Jes(6)-正规表示法与文件格式化处理
- Codeforces 27 E Number With The Given Amount Of Divisors
- 机器学习实践 学习笔记1 Machine learning basics