題目描述:
給你乙個正整數n
,生成乙個包含1
到n2
所有元素,且元素按順時針順序螺旋排列的n x n
正方形矩陣matrix
。
解題思路:
這個題目首先看的話:我的想法是分層:這個都是先外層然後內層;然後一層層的排布下去。
按照分層的思路之後,進行編碼。
主要碰到的問題:1、首先是按照分層,但是**比較隨意,導致多次迭代的時候,出現第一層正常,第二次修改。第二層修改又導致第一層問題。除錯時間有些長
2、基於分層之後,沒有立即分析第一層和第二層的位置關係
後面分析了第一層和第二層的位置關係之後,除錯就比較順暢
**:
#include /**
* return an array of arrays of size *returnsize.
* the sizes of the arrays are returned as *returncolumnsizes array.
* note: both returned array and *columnsizes array must be malloced, assume caller calls free().
*/int** generatematrix(int n, int* returnsize, int** returncolumnsizes)
int row = 0, column = 0;
int directions[4][2] = , , , }; // 右下左上
int directionindex = 0;
while (curnum <= maxnum)
row = row + directions[directionindex][0];
column = column + directions[directionindex][1];
}return matrix;
}void generatematrix1(int num)
; int index=0;
int index1=0;
int index2=1;
int quan_num=0;
if (num%2 ==0)
quan_num = num/2;
else
quan_num = (num-1)/2+1;
printf("num :%d;quan_num:%d\r\n",num,quan_num);
for (index=0;index
}for (index1=0;index1
index1--;
temp = index1+index;
printf("2 %d\r\n",temp);
for (index1=(0);index1
index1 = index1-1;
temp = temp;
temp1 = index+index1+1;
printf("3 %d\r\n",temp);
for (index1=(0);index1
index1 = index1-1;
temp = temp;
temp1 = temp1-index1-1;
printf("4 %d\r\n",temp);
for (index1=(0);index1
}if (num%4==0)
else if(num%4==1)
else if(num%4==2)
else if(num%4==3)
printf("\r\n");
for (index=0;index<=19;index++)
printf("\r\n"); }}
int main(void);
scanf("%d", &num);
generatematrix1(num);
return 0;
}
leetcode 59 螺旋矩陣
題目要求 按照順時針螺旋順序 構建乙個n n的螺旋矩陣 思路 參照之前的54題輸出螺旋矩陣的思路 將單圈拆開為四個部分。每個部分迴圈的長度是相同的。單圈迴圈完之後,起始座標向右下移乙個單位,單次迴圈長度減二。對於偶數階矩陣,正常結束。對於奇數階矩陣,因為迴圈長度會減到0,需要手動加入最後最中間的乙個...
LeetCode 59 螺旋矩陣II
給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3 輸出 1,2,3 8,9,4 7,6,5 import numpy as np class solution def generatematrix self,n type n int r...
Leetcode 59 螺旋矩陣 II
給定乙個正整數 n,生成乙個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。輸入 3 輸出 1,2,3 8,9,4 7,6,5 複製 這個題目也比較簡單,和第54題類似 這個題目很簡單,上下左右分別用四個變數去標誌 上 top 下 bottom 左 left 右 right ...