[LeetCode]59. Spiral Matrix II
59. Spiral Matrix II
Given an integern, generate a square matrix filled with elements from 1 ton2in spiral order.
For example,
Givenn=3
,
You should return the following matrix:
[[1,2,3],[8,9,4],[7,6,5]]
题意:
给定一个整数n,生成一个包含1到n*n所有元素的螺旋形矩阵。
1,二维数组的动态空间分配(int**array大小为m*n):1)首先分配m个的指针单元:int**array=(int**)malloc(sizeof(int*)*m);2)接着分配n个字符的单元:for(cnt=0;cnt<n;cnt+=1){array[cnt]=(int*)malloc(sizeof(int)*n);}注意:分配指针单元时sizeof的参数是指针。2,二维数组动态内存的释放:for(cnt=0;cnt<n;cnt+=1){free((void*)array[cnt]);}free((void*)array);3,变量含义:定义brow代表从左到右执行的次数,erow代表从右到左执行的次数;bcol代表从下往上读取次数,ecol代表从上往下读取次数。所以有:1)从左往右读取时,必须从bcol列开始读取,递增直到ecol列。2)从右往左读取时,必须从ecol列开始读取,递减直到bcol列。2)从上往下读取时,必须从brow行开始读取,递增直到erow行。4)从下往上读取时,必须从erow行开始读取,递减直到brow行。
其他规则同《[LeetCode]54. Spiral Matrix》
/***Returnanarrayofarrays.*Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int**generateMatrix(intn){if(n<=0){returnNULL;}int**array=(int**)malloc(sizeof(int*)*n);if(!array){returnNULL;}intcnt=0;for(cnt=0;cnt<n;cnt+=1){array[cnt]=(int*)malloc(sizeof(int)*n);}intbrow=0;interow=n-1;intbcol=0;intecol=n-1;inttimes=1;intvalue=1;cnt=0;while(cnt<n*n){if(times%4==1){intcount=bcol;while(count<=ecol){array[brow][count]=value;count+=1;value+=1;}cnt=cnt+count-bcol;brow+=1;}elseif(times%4==2){intcount=brow;while(count<=erow){array[count][ecol]=value;count+=1;value+=1;}cnt=cnt+count-brow;ecol-=1;}elseif(times%4==3){intcount=ecol;while(count>=bcol){array[erow][count]=value;count-=1;value+=1;}cnt=cnt+ecol-count;erow-=1;}else{intcount=erow;while(count>=brow){array[count][bcol]=value;count-=1;value+=1;}cnt=cnt+erow-count;bcol+=1;}times+=1;}returnarray;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。