日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

螺旋方阵(Leetcode第59题)

發(fā)布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 螺旋方阵(Leetcode第59题) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題描述:螺旋矩陣

#include <stdio.h> #include <memory.h> 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<n-c; i++) //→a[r][i] = num++;r++;for (i = r; i<n-c; i++) //↓a[i][n-c-1] = num++;c++;for (i = c-1; i<n-c; i++) //←a[n-r][n-i-2] = num++; // for (i = n - c; i >= r - 1; i--) //← // a[n-r][i] = ++num;//減減方法 // for (i = n - c - 1; i > r-1; i--) //↑ // a[i][c-1] = num++;for (i = r; i<n-r; i++) //↑a[n-1-i][c-1] = num++; } if(n%2 != 0) //如果是奇數(shù),填上正中間那個數(shù)a[n/2][n/2] = num++;for (int i =0; i<n; i++){ //遍歷輸出for (int j =0; j<n; j++)printf("%3d",a[i][j]);printf("\n");} return 0; }

思路:最開始我做題的想法不是這樣的,我最開始用的是二維數(shù)組去賦值(兩個for循環(huán)),因為輸出螺旋矩陣,是個二維的,所以最開始想的就是用兩個for循環(huán),以至于思維受限,導(dǎo)致很久都沒有相出解決方法來。就只讓最外面的一層給按順序給排序好了,其他的就不對了。應(yīng)該的思維是一次一次的排序,而不是兩個for循環(huán)的排序。具體方法請看代碼即可理解清楚。首先,因為要進行的螺旋排序不止一圈,所以要在一個while循環(huán)中進行,循環(huán)判斷的條件是方陣階數(shù)的二分之一,如果是奇數(shù),那最中心的那個數(shù)是需要單獨賦值的,及最大值,如果是偶數(shù)直接排序即可。

思考如下幾個問題:①在進行向左和向上時只能用++的方式?,可以怎么改?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?②為什么我輸出的結(jié)果是0開始的?如果改?改的方式?

解決:①不止可以以++的方式,還可以--的方式,在慣性思維里用的是--的方式,但是這里用--的方式的話,它的判斷條件就不一樣了,這里需要仔細考慮。

? ? ? ? ?當減減時就是從最右邊開始往左減減,一直減到第一個,也就是第0列的位置,判斷停止,向上也是同樣的判斷,但是最后到達的地方的判斷的條件不一致,這里需要思考一下(因為第0行已經(jīng)有數(shù)了,所以不能取等號),減減的方式也附上了。

? ? ? ②輸出是0開始是因為最開始的初始值為0,有兩個方法可以解決此問題,第一個也是最簡單的,就是把初始值賦值為1開始,第二個方法是num++變成++num,這個一般很少想得到,這里又涉及到了另一個知識點,可以復(fù)習(xí)一下。

關(guān)于++i和i++的區(qū)別,可參考以下博主:https://blog.csdn.net/Cs_ChenSh/article/details/79955638

強調(diào):本題的關(guān)鍵還有一點是循環(huán)的判斷條件,也就是沒次for循環(huán)的終止點在哪,下一次的開始點是那,這要搞清楚,不然會重復(fù)和亂,堅持一種原則即可

例如:左閉右開,如下圖(這點很關(guān)鍵,再次強調(diào))

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?

?

?

總結(jié)

以上是生活随笔為你收集整理的螺旋方阵(Leetcode第59题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。