顺时针打印m*n矩阵
来源:互联网 发布:控制系统仿真软件 编辑:程序博客网 时间:2024/05/17 06:12
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
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]
.package com.vic.leetcode.solutions;import java.util.ArrayList;import java.util.List;public class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> list = new ArrayList<Integer>();if(null==matrix||matrix.length==0)return list;int start = 0,columns = matrix[0].length,rows = matrix.length;while(columns>2*start&&rows>2*start){ list.addAll(spiralPrint(matrix,columns,rows,start)); start++;}return list;}private List<Integer> spiralPrint(int[][] matrix,int columns, int rows, int start) {List<Integer> tempList = new ArrayList<Integer>();int endX = columns - start - 1;int endY = rows - start - 1;//from left to rightfor(int i = start; i <= endX; i++){tempList.add(matrix[start][i]);}//from top to bottomif(endY > start){for(int i = start + 1; i <= endY; i++){tempList.add(matrix[i][endX]);}}//from right to leftif(endX > start && endY > start){for(int i = endX - 1; i >= start; i--){tempList.add(matrix[endY][i]);}}//from bottom to topif(endX > start && endY > start){for(int i = endY - 1; i > start; i--){tempList.add(matrix[i][start]);}}return tempList;}public static void main(String[] args) {int[][] matrix = {{1,2,3},{4,5,6}};Solution sl = new Solution();sl.spiralOrder(matrix);for(Integer n : sl.spiralOrder(matrix)){System.out.print(n+" ");}}}
0 0
- 顺时针打印m*n矩阵
- M*N矩阵顺时针旋转90度
- 顺时针填充m×n回旋矩阵 C#
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- python yeild 生成器
- weblogic12c下配置节点管理器管理受管理服务器
- jsp里面,实现跳转,可以在javascript里面,添加代码:
- 理解MySQL——架构与概念
- 40自定义土司&&点击事件的自定义布局
- 顺时针打印m*n矩阵
- 两个复数相加
- 理解RESTful架构
- linux下weblogic多机器集群部署要点
- iOS给UILabel描边
- 理解MySQL——索引与优化
- WEBLOGIC启动后,重启后控制台进入缓慢、延迟,探查WEBLOGIC操作
- 复数加减运算
- OpenCV 利用MFC的Picture控件显示和处理图像