Java逐行輸出N N螺旋矩陣,要求最小空間複雜度

2021-07-04 19:29:04 字數 1224 閱讀 9942

今天去參加了乙個筆試,有乙個筆試題是逐行輸出乙個n*n螺旋矩陣,要求最小空間複雜度,比如4*4,則如下:

1  2  3  4

12 13 14 5

11 16 15 6

10 9 8 7

?

當時想了半天,最後終於想到個思路,不過也用了太長時間,沒時間寫具體**了。而且筆試也是手寫**到紙上,這樣**沒法實時改和看結果,而且水平有限,所以很討厭這樣的寫**方式。  回來路上想既然思路都有了,在電腦上應該很快能寫出來,結果折騰了3個多小時才寫好,感覺自己真是弱爆啊。。。對數字太不敏感,尤其是for迴圈是0還是1開頭,到底包不包括邊界,一複雜點兒就暈。。。

自己的思路是這樣的:每圈的長度是可以算出來的,比如上面4*4的矩陣,最外圈長度是12,內圈的長度是4,所以可可以根據第i*j個元素處在那一圈計算其值大小。

最終**如下:

public class matrix 

public static string form = null;

public void printmatrix(int dim)

system.out.println();

}for(int i=max+1; i<=dim; i++)

printbottemline(dim-i+1, dim);

for(int j=dim-i;j>0;j--)

system.out.println();}}

public void print(int i)

public int getsize(int level, int dim)

return size;

}public void printtopline(int level, int dim) {

int size =getsize(level-1, dim);

for(int i=0; i

輸出:1 2 3 4 5 6 7

24 25 26 27 28 29 8

23 40 41 42 43 30 9

22 39 48 49 44 31 10

21 38 47 46 45 32 11

20 37 36 35 34 33 12

19 18 17 16 15 14 13

但感覺**還是太複雜了,看著就暈,不知道誰有更簡單的方法啊,網上簡單搜了一些,沒找到。。。

N N矩陣螺旋列印輸出

例 1 2 3 4 5 6 7 8 9 輸出為如下結果 1 4 7 8 9 6 3 2 5 private void button1 click object sender,eventargs e console.writeline console.writeline this.printarray...

C 的n n螺旋輸出陣列

開發工具與關鍵技術 visual studio c 在這裡用到的二維動態陣列遍歷,通俗易懂。include include factorial.h using namespace std void show int a,int n cout endl cout endl 5 5順序 void fac...

輸出螺旋矩陣

螺旋矩陣 是指乙個呈螺旋狀的矩陣,它的數字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此迴圈。如圖1 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 輸出螺旋矩陣 author zhanliqing ...