leetcode 54. 螺旋矩阵

54. 螺旋矩阵

难度中等360收藏分享切换为英文关注反馈

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

示例 1:

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

示例 2:

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

解法:模拟,标记拐弯的x,y。同时对四次遍历进行标记,(横两次,竖两次)。走过的点更新为-100。这是为了判断是不是还能继续向前走。如果周围的点都是-100的话。那就走到头了

package 力扣;

import java.util.ArrayList;
import java.util.List;

public class No54 {
	public List spiralOrder(int[][] matrix) {
		List list=new ArrayList<>();
		if(matrix.length==0)
			return list;
		int flag=0,a=0,b=0;
		int a1=0,b1=0;
		int k=0,h=0;
		while(list.size()matrix[a].length-1 || matrix[a][j]==-100)
							break;
						list.add(matrix[a][j]);
						matrix[a][j]=-100;
						b=j;
					}
					b1++;
				}
				else {
					b--;
					for(int j=b;;j--) {
						if(j<0||matrix[a][j]==-100)
							break;
						list.add(matrix[a][j]);
						matrix[a][j]=-100;
						b=j;
					}
					b1++;
				}
				flag++;
			}
			else {
				//System.out.println("flag="+flag+"a="+a+"b="+b+"行");
				if(a1%2==0) {
					a++;
					for(int i=a;;i++) {
						if(i>matrix.length-1||matrix[i][b]==-100)
							break;
						list.add(matrix[i][b]);
						matrix[i][b]=-100;
						a=i;
					}
					a1++;
				}
				else {
					a--;
					for(int i=a;;i--) {
						if(i<0||matrix[i][b]==-100)
							break;
						list.add(matrix[i][b]);
						matrix[i][b]=-100;
						a=i;
					}
					a1++;
				}
				flag++;
			}
		}
//		for(int i=0;i

leetcode 54. 螺旋矩阵_第1张图片

你可能感兴趣的:(模拟,leetcode)