Spiral Matrix
2024-10-11 23:21:53
Spiral Matrix
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
You should return [1,2,3,6,9,8,7,4,5]
.
这道题用的递归的思想,将最外面一层添加到result列表中,然后将剩下元素作为一个数组,做下一次递归,感觉有点土,晚点去搜点高大上的
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; //class ListNode {
// public int val;
// public ListNode next;
// ListNode(int x) {
// val = x;
// next = null;
// }
// } public class Solution {
List<Integer> result = new ArrayList<Integer>(); public List<Integer> spiralOrder(int[][] matrix) {
if(null == matrix || matrix.length == 0)
return result; else if(matrix.length == 1 && matrix[0].length == 1) //只有一个元素直接添加
result.add(matrix[0][0]);
else if(matrix[0].length == 1){ //竖条
for(int i = 0; i < matrix.length; i++){
result.add(matrix[i][0]); //直接添加
}
}
else if(matrix.length == 1){ //横条
for(int i = 0; i < matrix[0].length; i++){
result.add(matrix[0][i]);
}
}
else {
for(int i = 0; i < matrix[0].length; i++){ //添加第一排
result.add(matrix[0][i]);
}
for(int i = 1; i < matrix.length; i++){ //添加最后一竖
result.add(matrix[i][matrix[0].length - 1]);
}
for(int i = matrix[0].length - 2; i >= 0; i--){ //添加最后一排
result.add(matrix[matrix.length - 1][i]);
}
for(int i = matrix.length - 2; i >= 1;i--){ //添加第一排
result.add(matrix[i][0]);
}
if(matrix.length - 2 != 0 && matrix[0].length - 2 != 0){
int next[][] = new int[matrix.length - 2][matrix[0].length - 2];
for(int i = 1; i < matrix.length - 1; i++){
for(int j = 1; j < matrix[0].length - 1;j++){
next[i - 1][j - 1] = matrix[i][j];
}
}
spiralOrder(next); //递归求解下一个矩阵的值
} } return result;
}
}
最新文章
- 嵌入式Linux驱动学习之路(二十三)NAND FLASH驱动程序
- extJS起步
- C语言scanf函数详细解释
- SVN 树冲突的解决方法(Ubuntu 环境)
- python异常类型
- codeforces #313 div1 D
- MarkDown 格式生产类型
- jTemplates——学习(1)
- 利用git下载skia库
- webpack2+node+react+babel实现热加载(hmr)
- [Swift]LeetCode766. 托普利茨矩阵 | Toeplitz Matrix
- Linux内存管理 (7)VMA操作
- Filebeat工作原理
- linux系统安装mysql详细配置
- 103. Binary Tree Zigzag Level Order Traversal (Tree, Queue; BFS)
- KVM ->; 虚拟化简介&;虚拟机安装_01
- redis配置文件相关
- java-基础-【二】内部类与静态内部类
- 【LOJ121】「离线可过」动态图连通性
- 【OpenCV】SIFT原理与源码分析:关键点搜索与定位