LeetCode059 Spiral Matrix II
来源:互联网 发布:淘宝详情页文案价格 编辑:程序博客网 时间:2024/06/05 15:49
详细见:leetcode.com/problems/spiral-matrix-ii
Java Solution: github
package leetcode;public class P059_SpiralMatrixII {public static void main(String[] args) {int[][] ans = new Solution().generateMatrix(9);tools.Utils.A_打印二维数组(ans);}/* * 1 ms * 2.83% */static class Solution {int[][] ans = null;int count = 0; public int[][] generateMatrix(int n) { if (n < 1) return new int[0][0]; ans = new int[n][n]; int eni = n >> 1; for (int i = 0; i != eni; i ++) fourEdge(i, n - 1 - i, n - 1 - i); if ((n & 0x1) == 1) ans[eni][eni] = ++count; return ans; }private void fourEdge(int i, int j, int k) {int t = 0;for (t = i; t < k; t ++)ans[i][t] = ++ count;for (t = i; t < j; t ++)ans[t][k] = ++ count;for (t = k; t > i; t --)ans[j][t] = ++ count;for (t = j; t > i; t --)ans[t][i] = ++ count;}}}
C Solution: github
/* url: leetcode.com/problems/spiral-matrix-ii/ AC 3ms 14.29%*/#include <stdio.h>#include <stdlib.h>void shell_add(int** m, int i, int j, int* v) { int k = 0; for (k = i; k < j; k ++) m[i][k] = (*v) ++; for (k = i; k < j; k ++) m[k][j] = (*v) ++; for (k = j; k > i; k --) m[j][k] = (*v) ++; for (k = j; k > i; k --) m[k][i] = (*v) ++;}int** generateMatrix(int n) { int** m = (int**) malloc(sizeof(int*) * n); int i = 0, j = n-1, v = 1; for (i = 0; i < n; i ++) m[i] = (int*) malloc(sizeof(int) * n); i = 0; while (i < j) { shell_add(m, i, j, &v); i ++; j --; } if (n % 2 == 1) m[n/2][n/2] = v; return m;}int main() { int n = 9; int** m = generateMatrix(n); int i = 0; int j = 0; for (i = 0; i < n; i ++) { for (j = 0; j < n; j ++) { printf("%d ", m[i][j]); } printf("\r\n"); }}
Python Solution: github
#coding=utf-8''' url: leetcode.com/problems/spiral-matrix-ii @author: zxwtry @email: zxwtry@qq.com @date: 2017年4月12日 @details: Solution: 62ms 20.60%'''class Solution(object): def shell_add(self, ans, ai, i , j): for k in range(i, j): ans[i][k] = ai[0] ai[0] += 1 for k in range(i, j): ans[k][j] = ai[0] ai[0] += 1 for k in range(j, i, -1): ans[j][k] = ai[0] ai[0] += 1 for k in range(j, i, -1): ans[k][i] = ai[0] ai[0] += 1 def generateMatrix(self, n): """ :type n: int :rtype: List[List[int]] """ ans = [[0 for i in range(n)] for j in range(n)] i, j, ai = 0, n-1, [1] while i < j: self.shell_add(ans, ai, i, j) i += 1 j -= 1 if n % 2 == 1: ans[i][j] = ai[0] return ans if __name__ == "__main__": n = 3 print(Solution().generateMatrix(n))
0 0
- LeetCode059 Spiral Matrix II
- 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
- String类和StringBuffer类的常用操作
- 初学Android——数据储存与访问
- 天天写业务代码的那些年,我们是如何成长过来的
- Linux程序管理
- 人机界面----学生信息管理
- LeetCode059 Spiral Matrix II
- 99乘法表
- CSDN如何转载别人文章
- jQuery常用知识总结
- vector的用法及基本操作
- 函数指针初始化和调用的几种方法
- LeetCode060 Permutation Sequence
- MPI之聚合通信collective communication-广播
- C++的三种继承方式详解