java编程题之顺时针打印矩阵
- 更新时间:2022-06-12 11:31:27
- 编辑:牛立人
-
Java 基础核心总结
- 大小:11 MB
- 发布人:尹炎彬
- 下载:Java基础
本文实例为大家分享了java顺时针打印矩阵的具体代码,供大家参考,具体内容如下
github:剑指offer编程题
import java.util.ArrayList; /** * * 剑指offer编程题(JAVA实现)——第19题:顺时针打印矩阵 * * 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如, 如果输入如下4 X 4矩阵: 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. * */ public class Test19 { public static void main(String[] args) { int[][] array1 = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } }; int[][] array2 = { { 1 } }; int[][] array3 = { { 1 }, { 2 }, { 3 }, { 4 }, { 5 } }; int[][] array4 = { { 1, 2, 3, 4, 5 } }; int[][] array5 = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 } }; printMatrix(array1); System.out.println(); printMatrix(array2); System.out.println(); printMatrix(array3); System.out.println(); printMatrix(array4); System.out.println(); printMatrix(array5); } public static ArrayList<Integer> printMatrix(int[][] matrix) { ArrayList<Integer> arrayList = new ArrayList<>(); int x = 0; int row = matrix.length; int line = matrix[matrix.length - 1].length; while (x < row && x < line) { arrayList.addAll(printLine(matrix, x, x, row, line)); x++; row--; line--; } System.out.print(arrayList.toString()); return arrayList; } private static ArrayList<Integer> printLine(int[][] matrix, int r1, int l1, int r2, int l2) { ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = l1; i <= l2 - 1; i++) {// 保证奇数层中间可输出 arrayList.add(matrix[r1][i]); } for (int k = r1 + 1; k <= r2 - 1; k++) { arrayList.add(matrix[k][l2 - 1]); } if ((r2 - r1) != 1) {//防止重复打印 for (int j = l2 - 2; j >= l1; j--) { arrayList.add(matrix[r2 - 1][j]); } } if ((l2 - l1) != 1) {//防止重复打印 for (int u = r2 - 2; u > r1; u--) { arrayList.add(matrix[u][l1]); } } return arrayList; } } //其他方法 /** import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] array) { ArrayList<Integer> result = new ArrayList<Integer> (); if(array.length==0) return result; int n = array.length,m = array[0].length; if(m==0) return result; int layers = (Math.min(n,m)-1)/2+1;//这个是层数 for(int i=0;i<layers;i++){ for(int k = i;k<m-i;k++) result.add(array[i][k]);//左至右 for(int j=i+1;j<n-i;j++) result.add(array[j][m-i-1]);//右上至右下 for(int k=m-i-2;(k>=i)&&(n-i-1!=i);k--) result.add(array[n-i-1][k]);//右至左 for(int j=n-i-2;(j>i)&&(m-i-1!=i);j--) result.add(array[j][i]);//左下至左上 } return result; } } */
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持java学习网。
相关下载
-
Java语言程序设计:基础篇(英文第六版)
大小:9.35 MB -
Java面试手册(350道面试题)
大小:2.4 MB -
Java面向对象程序设计(第2版)
大小:610 KB
相关教程
-
Java老矣,尚能饭否?
给大家整理了关于Java的教程,Java老矣,尚能饭否?各类编程语言横空出世,纷战不休,然而 TIOBE 的语言排行榜上,Java 却露出了明显的颓势。这个老牌的语言,未来会是怎样?
发布时间:2022-06-11主题:
查看详情 -
java swagger ui 添加header请求头参数的方法
给网友们整理关于java的教程,今天小编就为大家分享一篇java swagger ui 添加header请求头参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2022-06-11主题:
查看详情 -
使用Java的方式模拟Flutter的Widget实现多层括号嵌套
为网友们分享了关于java的教程,这篇文章主要介绍了使用Java的方式模拟Flutter的Widget的实现多层括号嵌套问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2022-06-11主题:
查看详情 -
Java中的Random()函数及两种构造方法
给大家整理一篇关于java的教程,Java中存在着两种Random函数分别是java.lang.Math.Random和java.util.Random,文中给大家介绍了random()的两种构造方法,感兴趣的朋友跟随小编一起看看吧
发布时间:2022-06-10主题:
查看详情 -
Java实现base64图片编码数据转换为本地图片的方法
给网友们整理关于java的教程,这篇文章主要介绍了Java实现base64图片编码数据转换为本地图片的方法,涉及java编码转换及图片文件生成相关操作技巧,需要的朋友可以参考下
发布时间:2022-06-10主题:
查看详情 -
Java的接口和抽象类深入理解
给网友朋友们带来一篇关于java的教程,这篇文章主要介绍了Java的接口和抽象类深入理解的相关资料,希望通过本文大家能够理解应用接口与抽象类的使用方法,需要的朋友可以参考下
发布时间:2022-06-11主题:
查看详情 -
Hibernate传入Java对象创建动态表并录入数据
为网友们分享了关于java的教程,这篇文章主要介绍了Hibernate传入Java对象创建动态表并录入数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
发布时间:2022-06-10主题:Hibernate传入Java对象
查看详情 -
Java并发编程学习之Unsafe类与LockSupport类源码详析
这篇文章主要给大家介绍了关于Java并发编程学习之Unsafe类与LockSupport类源码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面
发布时间:2022-06-11主题:
查看详情 -
Java在利用反射条件下替换英文字母中的值
给网友朋友们带来一篇关于java的教程,今天小编就为大家分享一篇关于Java在利用反射条件下替换英文字母中的值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
发布时间:2022-06-11主题:
查看详情