給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。
示例:輸入: 3
輸出:[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]嘗試過用數學公式推導[row][col]的值,沒推出來
只能用「真-螺旋」方法生成了,最外層迴圈次數是固定的,n^2次,且生成數也是從1 到 n^2,故生產數也可以作為迴圈控制變數
同上次螺旋矩陣i,從外層到內層依次訪問,設定deep = 層深度,預設最外層deep=0層從 [0][0] 開始到 [1][0]結束,deep++,deep=1層從[1][1] 開始到 [2][1]結束,deep++,deep=3等以此類推.....可用n和deep很方便設定每次遍歷範圍
每層迴圈,先執行向右 j++,然後向下i++,再向左 j--,最後向上 i--,注意結尾位置並非起點,而且為了避免折返錄入(見螺旋矩陣 i 3問題二),在向下、向左、向上時候要檢測cnt是否應該結束迴圈
class solution
for( i=n-2-deep,j+=1 ; i>deep && cnt<=n*n ; i--,cnt++)
deep++;
}return ret;
}}
LeetCode筆記 59螺旋矩陣
題目 給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3輸出 1,2,3 8,9,4 7,6,5 思路 直接看了網上大神的 和leetcode上最快的 先把這兩個程式看懂。public class solution else if j n...
leetcode 59 螺旋矩陣
題目要求 按照順時針螺旋順序 構建乙個n n的螺旋矩陣 思路 參照之前的54題輸出螺旋矩陣的思路 將單圈拆開為四個部分。每個部分迴圈的長度是相同的。單圈迴圈完之後,起始座標向右下移乙個單位,單次迴圈長度減二。對於偶數階矩陣,正常結束。對於奇數階矩陣,因為迴圈長度會減到0,需要手動加入最後最中間的乙個...
螺旋方陣(Leetcode第59題)
問題描述 螺旋矩陣 include include int main int n scanf d n int i,c 0,r 0,num 0,cnt n 2 int a n n while cnt for i r i r 1 i a n r i num 減減方法 思路 最開始我做題的想法不是這樣的,...