当前位置: 首页> 文旅> 艺术 > 电商办公室_广州设计公司排名榜_自主建站_营销的主要目的有哪些

电商办公室_广州设计公司排名榜_自主建站_营销的主要目的有哪些

时间:2025/8/27 16:55:23来源:https://blog.csdn.net/weixin_45864705/article/details/142205465 浏览次数:0次
电商办公室_广州设计公司排名榜_自主建站_营销的主要目的有哪些

螺旋矩阵

问题描述:

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

 

示例 1:

bd0a154e535b2f1a08da6ecb84105933.jpeg

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

92276976b87d4423915b1b51b9c0f97e.png

示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

思路分析:

  • 采用伴随矩阵visited来标记已经遍历过的元素

  • 使用方向矩阵directions来控制移动方

//提交版
class Solution {public List<Integer> spiralOrder(int[][] matrix) {// 创建储存顺时针的列表List<Integer> order = new ArrayList<>();if (matrix == null || matrix.length == 0 || matrix[0].length == 0){return order;}int rows = matrix.length;int columns = matrix[0].length;boolean[][] visited = new boolean[rows][columns];int total = rows * columns;int row = 0;int column = 0;int[][] directions = {{0,1},{1,0},{0,-1},{-1,0}};int directionIndex = 0;for (int i = 0; i < total; i++){order.add(matrix[row][column]);//已经访问过的进行标记visited[row][column] = true;int nextrow = row + directions[directionIndex][0];int nextcolumn =column + directions[directionIndex][1];if (nextrow<0||nextrow>=rows||nextcolumn<0||nextcolumn>=columns||visited[nextrow][nextcolumn])directionIndex = (directionIndex+1)%4;row = row + directions[directionIndex][0];column = column + directions[directionIndex][1];}return order;}
}//带有输入输出版
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class hot_16spiralOrder {public List<Integer> spiralOrder(int[][] matrix){// 创建储存顺时针的列表List<Integer> order = new ArrayList<>();if (matrix == null || matrix.length == 0 || matrix[0].length == 0){return order;}int rows = matrix.length;int columns = matrix[0].length;boolean[][] visited = new boolean[rows][columns];int total = rows * columns;int row = 0;int column = 0;int[][] directions = {{0,1},{1,0},{0,-1},{-1,0}};int directionIndex = 0;for (int i = 0; i < total; i++){order.add(matrix[row][column]);//已经访问过的进行标记visited[row][column] = true;int nextrow = row + directions[directionIndex][0];int nextcolumn =column + directions[directionIndex][1];if (nextrow<0||nextrow>=rows||nextcolumn<0||nextcolumn>=columns||visited[nextrow][nextcolumn])directionIndex = (directionIndex+1)%4;row = row + directions[directionIndex][0];column = column + directions[directionIndex][1];}return order;}public static void main(String[] args){int[][] matrix = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};System.out.println("输入:" + Arrays.deepToString(matrix));hot_16spiralOrder hot16spiralOrder = new hot_16spiralOrder();List<Integer> result = hot16spiralOrder.spiralOrder(matrix);System.out.println("输出" + result);}
}

知识点总结:

  • 方向矩阵的计算方式:directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};

directionIndex = (directionIndex +1)% 4

directionIndex = 0:表示向右移动 (0, 1)

directionIndex = 1:表示向下移动 (1, 0)

directionIndex = 2:表示向左移动 (0, -1)

directionIndex = 3:表示向上移动 (-1, 0)

 

865517efb5eb44e9a8249a87cb901537.jpeg

 

关键字:电商办公室_广州设计公司排名榜_自主建站_营销的主要目的有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: