日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

螺旋方阵(Leetcode第59题)

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

問(wè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ù),填上正中間那個(gè)數(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; }

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

思考如下幾個(gè)問(wèn)題:①在進(jìn)行向左和向上時(shí)只能用++的方式?,可以怎么改?

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

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

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

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

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

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

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

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

?

?

?

總結(jié)

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

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