leetcode做题总结,题目Spiral Matrix I/II 2012/03/24
来源:互联网 发布:知乎 加拿大ee 编辑:程序博客网 时间:2024/06/08 16:24
这种题思路很容易想到,就是编程起来太麻烦,在数组里定位容易写错,现在虽然基本题目都是直接在网站文本框里写,告别IDE,但是还是没法一次性写出来无bug的代码,还是需要调试,有时候还经常while忘了i++,忘记return的小错误,以后要注意。
void visit(int[][] a, int x, int m, int n, LinkedList<Integer> l){ if(m==1&&n==1){ l.add(a[x][x]); return; } if(m<=0||n<=0){ //l.add(a[x][x]); return; } int i=0,j=0; if(m==1){ while(j<n){ l.add(a[x][x+j]); j++; } }else if(n==1){ while(i<m){ l.add(a[x+i][x]); i++; } }else { while(j<n){ l.add(a[x][x+j]); j++; } i++; while(i<m){ l.add(a[x+i][x+n-1]); i++; } i--; j--; j--; while(j>=0){ l.add(a[x+m-1][x+j]); j--; } i--; while(i>=1){ l.add(a[x+i][x]); i--; } visit(a,x+1,m-2,n-2,l);} } public List<Integer> spiralOrder(int[][] matrix) { LinkedList<Integer> l = new LinkedList<Integer>(); int m=matrix.length; if(m==0) return l; int n=matrix[0].length; visit(matrix,0,m,n,l); return l; }
第二题和第一题差不多,第一题是转圈访问第二题时转圈生成,直接用的第一题的代码进行修改即可
void visit(int[][] a, int x, int m, int n, int value){ if(m==1&&n==1){ a[x][x]=value; return; } if(m<=0||n<=0){ //l.add(a[x][x]); return; } int i=0,j=0; if(m==1){ while(j<n){ a[x][x+j]=value++; j++; } }else if(n==1){ while(i<m){ a[x+i][x]=value++; i++; } }else { while(j<n){ a[x][x+j]=value++; j++; } i++; while(i<m){ a[x+i][x+n-1]=value++; i++; } i--; j--; j--; while(j>=0){ a[x+m-1][x+j]=value++; j--; } i--; while(i>=1){ a[x+i][x]=value++; i--; } visit(a,x+1,m-2,n-2,value);} } public int[][] generateMatrix(int n) { int[][] a = new int[n][n]; int value = 1; visit(a,0,n,n,value); return a; }
0 0
- leetcode做题总结,题目Spiral Matrix I/II 2012/03/24
- [LeetCode]Spiral Matrix I & II & Rotate Matrix
- 【leetcode】第59题 Spiral Matrix II 题目+解析+代码
- LeetCode题解:Spiral Matrix I and II
- [LeetCode]-Spiral Matrix I&II 螺旋矩阵
- LeetCode - Spiral Matrix I && II - Frequent
- LeetCode(54)(59) Spiral Matrix I II
- LeetCode 54/59. Spiral Matrix i, ii
- Spiral Matrix I(II)
- spiral-matrix I&II
- Spiral Matrix I && Spiral Matrix II
- LeetCode: Spiral Matrix II
- LeetCode Spiral Matrix II
- [Leetcode] Spiral Matrix II
- LeetCode : Spiral Matrix II
- [LeetCode] Spiral Matrix II
- [LeetCode]Spiral Matrix II
- [leetcode]Spiral Matrix II
- 最短路
- hadoop2.3安装过程及问题解决
- 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有
- ubuntu下android源码的下载
- ActionScript3游戏中的图像编程(连载十)
- leetcode做题总结,题目Spiral Matrix I/II 2012/03/24
- 一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式
- 程序打印自身代码的两种方法
- Java回调函数的理解
- linux中的mmap与unmap
- SVN分支/合并原理及最佳实践
- 软件设计的七大原则
- ActionScript3游戏中的图像编程(连载十一)
- malloc,colloc,realloc内存分配,动态库,静态库的生成与调用