Q14--顺时针打印矩阵
来源:互联网 发布:mac虚拟机 win7 win10 编辑:程序博客网 时间:2024/06/05 02:34
一、题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字。例如:如果输入矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则依次打印数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10
二、Java代码实现
import java.util.ArrayList; public class PrintMatrixClockWisely { public static void main(String[] args){ int[][] matrix = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; ArrayList<Integer> al = printMatrix(matrix); System.out.println(al); } public static ArrayList<Integer> printMatrix(int[][] matrix){ ArrayList<Integer> list = new ArrayList<Integer>(); if(list == null) return list; int rows = matrix.length; int columns = matrix[0].length; return printMatrix(matrix, columns, rows); } public static ArrayList<Integer> printMatrix(int[][] matrix,int columns, int rows){ ArrayList<Integer> list = new ArrayList<Integer>(); if(matrix == null || columns <=0 || rows <=0) return list; int start = 0; while(columns > start *2 && rows > start * 2){ list.addAll(print (matrix, columns, rows, start)); ++start; } return list; } public static ArrayList<Integer> print(int[][] matrix, int columns, int rows, int start){ ArrayList<Integer> list = new ArrayList<Integer>(); int endX = columns - 1 - start; int endY = rows - 1 -start; //从左到右 for(int i = start; i <= endX; ++i) list.add(matrix[start][i]); // 从上到下 if(start < endY){ for(int i = start +1; i <= endY; ++i) list.add(matrix[i][endX ]); } // 从右到左 if(start < endX && start < endY){ //至少两行两列 for(int i = endX -1; i >= start; --i) list.add(matrix[endY][i]); } // 从下到上 if(start < endX && start < endY-1){ for(int i = endY-1; i > start; --i) list.add(matrix[i][start]); } return list; } }
0 0
- Q14--顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 用java实现猜数游戏(幸运猜猜猜)
- eslipse 开启报错A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in orde
- leetcode 139. Word Break(dp,字典匹配)
- 初级前端自学react-native,必备知识点(ES6+ReactJS+flexbox)
- SpringMVC框架搭建
- Q14--顺时针打印矩阵
- Linux多线程编程(三)线程同步之互斥量
- 微信小程序-菜谱APP
- 仿支付宝提现选择到账银行卡页面实现
- drawable 回收机制参考
- android计时器延时启动活动
- AndroidApplication最后一页的时候,再按一次退出
- 关于修改bug的思考
- Thinkphp 分页