《漫画算法2》源码整理-5 二维数组螺旋输出
生活随笔
收集整理的這篇文章主要介紹了
《漫画算法2》源码整理-5 二维数组螺旋输出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?二維數組螺旋輸出
public class SpiralOrder {public static List<Integer> spiralOrder(int[][] matrix) {List<Integer> list = new ArrayList<Integer>();//當二維數組是空或任何一個維度是0,直接返回if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {return list;}//m是矩陣的行數int m = matrix.length;//n是矩陣的列數int n = matrix[0].length;//二維數組的層數,取決于行和列的較小值int size = (Math.min(m, n)+1)/2;//大循環,從外向內逐層遍歷矩陣for(int i=0; i<size; i++) {//從左到右遍歷“上邊”for (int j=i; j<n-i; j++) {list.add(matrix[i][j]);}//從上到下遍歷“右邊”for (int j=i+1; j<m-i; j++) {list.add(matrix[j][(n-1)-i]);}//從右到左遍歷“下邊”for (int j=i+1; j<n-i && (m-1)-i>i; j++) {list.add(matrix[(m-1)-i][(n-1)-j]);}//從下到上遍歷“左邊”for (int j=i+1; j<m-1-i && i<(n-1)-i; j++) {list.add(matrix[(m-1)-j][i]);}}return list;}public static void main(String[] args) {int[][] matrix = {{ 1, 2, 3, 4, 5 },{ 6, 7, 8, 9, 10 },{ 11, 12, 13, 14, 15 },{ 16, 17, 18, 19, 20 }};int[][] matrix2 = {{ 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 },{ 10, 11, 12 },{ 13, 14, 15 }};List<Integer> resultList1 = spiralOrder(matrix);System.out.println(Arrays.toString(resultList1.toArray()));List<Integer> resultList2 = spiralOrder(matrix2);System.out.println(Arrays.toString(resultList2.toArray()));} }總結
以上是生活随笔為你收集整理的《漫画算法2》源码整理-5 二维数组螺旋输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《漫画算法2》源码整理-4 字符串匹配算
- 下一篇: 《漫画算法2》源码整理-6 两数之和 三