日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看


    
歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常考数据结构与算法:螺旋矩阵m*n

發布時間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常考数据结构与算法:螺旋矩阵m*n 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

給定一個m x n大小的矩陣(m行,n列),按螺旋的順序返回矩陣中的所有元素。

?

解題思路:

使用計算輸出的方法,先處理上面一行,再處理右面一列,再處理下面一行,再處理左邊一列,這是一個處理流程,一直這樣操作,直到所有的元素都處理完成。

?

示例:

輸入

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

返回值

[1,2,3,6,9,8,7,4,5] import java.util.ArrayList;public class SpiralOrderMe {public static void main(String[] args) {int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};SpiralOrderMe spiralOrderMe = new SpiralOrderMe();spiralOrderMe.spiralOrder2(arr);}/** {1, 2, 3, 4},* {5, 6, 7, 8},* {9,10,11,12}*/public ArrayList<Integer> spiralOrder2(int[][] matrix) {ArrayList<Integer> result = new ArrayList<>(50);if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {return result;}// 只有一行的情況if (matrix.length == 1) {for (int i : matrix[0]) {result.add(i);}return result;}if (matrix[0].length == 1) {for (int i = 0; i < matrix.length; i++) {result.add(matrix[i][0]);}return result;}// 計算有多少圈int row = matrix.length;int col = matrix[0].length;int cycle = row < col ? row : col;cycle = (cycle + 1) / 2;int round = 0;int left = 0;int right = matrix[0].length - 1;int top = 0;int down = matrix.length - 1;// 總元素個數int total = col * row;int count = 0;while (round < cycle) {// 上面一行for (int i = left; i <= right && count < total; i++) {count++;result.add(matrix[round][i]);}top++;// 右邊一列for (int i = top; i <= down && count < total; i++) {count++;result.add(matrix[i][col - round - 1]);}right--;// 底下一行for (int i = right; i >= left && count < total; i--) {count++;result.add(matrix[row - round - 1][i]);}down--;// 左邊一列for (int i = down; i >= top && count < total; i--) {count++;result.add(matrix[i][round]);}left++;round++;}return result;}}

?

總結

以上是生活随笔為你收集整理的常考数据结构与算法:螺旋矩阵m*n的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。