螺旋矩陣之笨人笨解

2021-09-11 08:33:25 字數 1547 閱讀 2947

題目要求

給定乙個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。

輸入:[

[ 1, 2, 3 ],

[ 4, 5, 6 ],

[ 7, 8, 9 ]

]輸出: [1,2,3,6,9,8,7,4,5]

示例 2:

輸入:[

[1, 2, 3, 4],

[5, 6, 7, 8],

[9,10,11,12]

]輸出: [1,2,3,4,8,12,11,10,9,5,6,7]

獻上我的**:

public static listspiralorder(int matrix) 

return list;

} else if(matrix.length - 2*i == 1)

return list;

}else

for (int s = i + 1; s < matrix.length - i - 1; s++)

}for (int s = matrix[0].length - 1 - i; s >= i; s--)

for (int s = matrix.length - i - 1-1; s >= i+1; s--) }}

return list;

}

解答思路:

1.從最完整的乙個圈開始,我把乙個圈分為 上、右、下、左,並依次新增如[

[1, 2, 3, 4],

[5, 6, 7, 8],

[9,10,11,12]

]第一步新增1,2,3,4 第二步新增8,第三部新增12,11,10,9,第四部新增5

這樣就是其中一圈的所有值了。

2.我該迴圈新增幾圈,

起初我認為是matrix.length/2 + matrix.length%2,

這個值的理由是我每一圈的新增都是包含最上和最下2個陣列,所以為了不重複新增需要matrix.length/2 ,

而+matrix.length%2是考慮到總長為單數的情況;

最後考慮矩陣長寬不等的情況更改為最短一邊的length/2+length%2;

上面這個兩部已經滿足一些比較常規的資料了,下面考慮一些非常規的,來繼續完善我們的計算;

1>

這個條資料 他只有一行且只有一列,他也可以包含在其他資料中,比如

[[1, 2, 3, 4],

[5, 6, 7, 8],

[9,10,11,12]

] 這個中的 6,7。可以肯定的是 類似這種資料不需要按一圈來計算,只需要按線來計算,並且他只會出現在最後一圈。

所以針對這條資料單獨新增。

2>,,,}

[[1,2,3]

[4,5,6]

[7,8,9]

[10,11,12]

[13,14,15]

]這條資料與上面的那條有異曲同工之妙,上面的為橫線計算,這條資料為豎線計算,相同的是他也只會出現在最後一圈。

所以針對這條資料單獨新增。

笨人還是用笨方法

上次開會時,老闆給大家共享了一些經驗,有管理方面的,有財務方面的。其中提到老外,說老外老笨,連減法都不會做,財務管理主要是老外傳來的,所以財務裡都是用加法代替減法,不過效果確實挺好的。老外也真是的,怎麼連減法都不會呢,想當年我們的老祖宗發明盤時,加減乘除無一不能。而老外發明計算機時,計算機竟不會做減...

螺旋方針(螺旋矩陣)

螺旋方陣 time limit 1000ms memory limit 65536kb problem description 的螺旋方陣當n 5和n 3時分別是如下的形式 請給出乙個程式,對於任意的輸入 0 11 輸出按照上面規律所獲得的 的螺旋方陣。input 輸入第一行為整數 0 10 代表有...

螺旋矩陣 蛇形矩陣

問題描述 給定乙個包含m行n列的m x n矩陣,程式設計按照螺旋順序,輸出該矩陣中的所有元素。輸入有多個矩陣。每個矩陣資料的第1行有兩個整數m和n,接著是乙個mxn矩陣的描述,有m行,每行有n個整數 輸出對每個矩陣資料,按照螺旋順序輸出矩陣陣列的元素。輸入樣例 3 31 2 3 4 5 6 7 8 ...