以螺旋型填充二維陣列
思考方式是這樣,四個邊界,順序上、右、下、左,不斷往內縮,限制x,y達到螺旋型填充的目的
以4 * 4 來舉例,先填充1 2 3 4
上邊界往下移動,從5開始 填充5 6 7,右邊界往左移動
從8開始,填充8 9 10 ,下邊界往上移動
從11開始,填充11 12,左邊界向右移動
繼續下一輪,直到上右下左循環中任一次邊界超出,即結束
==========================================================================
1 public int[][] GenerateMatrix(int n) 2 { 3 int[][] result = new int[n][]; 4 for(int i = 0; i <n; i++) 5 { 6 result[i] = new int[n]; 7 } 8 int upLimit = 0, downLimit = n - 1, leftLimit = 0, rightLimit = n - 1; 9 int val = 0; 10 11 while (true) 12 { 13 for (int i = leftLimit; i <= rightLimit; i++) 14 { 15 result[leftLimit][i] = ++val; 16 } 17 if (++upLimit > downLimit) break; 18 19 for (int i = upLimit; i <= downLimit; i++) 20 { 21 result[i][rightLimit] = ++val; 22 } 23 if (--rightLimit < leftLimit) break; 24 25 for (int i = rightLimit; i >= leftLimit; i--) 26 { 27 result[downLimit][i] = ++val; 28 } 29 if (--downLimit < upLimit) break; 30 31 for(int i = downLimit; i >= upLimit; i--) 32 { 33 result[i][leftLimit] = ++val; 34 } 35 if (++leftLimit > rightLimit) break; 36 } 37 38 return result; 39 }
原文:https://www.cnblogs.com/seako/p/11046314.html