Spiral Matrix(Medium)

本文提供了一种使用深度优先搜索解决LeetCode螺旋矩阵问题的方法。通过递归地访问矩阵中的元素并跟踪已访问的位置,该算法实现了0ms运行时间的高效解决方案。

Spiral Matrix by leetcode
java编写
class Solution {
static int x=0;
static int y=0;
public static List spiralOrder(int[][] matrix) {
List list = new ArrayList<>();
if(matrix.length == 0){
return new ArrayList<>();
}
boolean[][] pan = new boolean[matrix.length][matrix[0].length];
dfs1(pan, list, matrix, x, y);
return list;
}

public static void dfs1(boolean[][] pan,List<Integer> list,int[][] matrix,int x,int y) {
	if(x==-1||x==matrix.length||y==-1||y==matrix[0].length) {
		return;
	}
			if(pan[x][y]==false) {
			pan[x][y]=true;
			list.add(matrix[x][y]);
			dfs1(pan, list, matrix, x, y+1);
			dfs1(pan, list, matrix, x+1, y);	
			dfs1(pan, list, matrix, x, y-1);
			dfs2(pan, list, matrix, x-1, y);
			}else {
				return;
			}
}

public static void dfs2(boolean[][] pan,List<Integer> list,int[][] matrix,int x,int y) {
	if(x==-1||x==matrix.length||y==-1||y==matrix[0].length) {
		return;
	}
			if(pan[x][y]==false) {
			pan[x][y]=true;
			list.add(matrix[x][y]);
			dfs2(pan, list, matrix, x-1, y);
			dfs1(pan, list, matrix, x, y+1);
			}else {
				return;
			}
}

}
8说了,我自己写的标准答案,这也太秀了吧,只用了0ms,啊啊啊啊啊,太激动了,我竟然也可以写出这么牛逼的代码hhhh。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值