哔哩哔哩2021校园招聘后端开发方向笔试卷B 第二题 螺旋矩阵

题目:

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素


输入例子1:
[[1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ]

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

 

代码:

复制代码
 1 import java.util.*;
 2 
 3 
 4 public class Solution {
 5     /**
 6      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 7      * 
 8      * @param matrix int整型二维数组 
 9      * @return int整型一维数组
10      */
11         public int[] SpiralMatrix (int[][] matrix) {
12         // write code here
13         if(matrix==null||matrix.length==0){
14             return new int[0];
15         }
16 
17         int m=matrix.length;
18         int n=matrix[0].length;
19         ArrayList<Integer> arrayList=new ArrayList<>();
20         //圈数由m、n中小的决定
21                 int t=(Math.min(m,n)+1)/2;
22         for (int i = 0; i < t; i++) {
23             fun(matrix,i,arrayList);
24         }
25         int[] res=new int[arrayList.size()];
26         for (int i = 0; i < res.length; i++) {
27             res[i]=arrayList.get(i);
28         }
29         return res;
30 
31     }
32 
33     //实现一个外圈遍历
34     public static void fun(int[][] matrix,int x,ArrayList<Integer> arrayList){
35         int m=matrix.length;
36         int n=matrix[0].length;
37         //上 行
38         for (int i = x; i < n -x; i++) {
39             arrayList.add(matrix[x][i]);
40 
41         }
42 
43         //右 列
44         for (int i = x+1; i < m -x; i++) {
45             arrayList.add(matrix[i][n-1-x]);
46 
47         }
48 
49         //下 行
50         for (int i = n-x-2; i >= x; i--) {
51                       //可能会导致matrix[x][x]再遍历一次,所以就将其去除
52                         if(i==x&&m -x-1==x){break;}
53             arrayList.add(matrix[m -x-1][i]);
54 
55         }
56 
57         //左 列
58         for (int i = m-x-2; i > x; i--) {
59             arrayList.add(matrix[i][x]);
60         }
61     }
62 }                
复制代码

 

posted @   堤苏白  阅读(120)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示