题目描述

输入一个矩阵,按照从外向里顺时针的顺序打印出每一个数字。测试用例如下图:

测试数组

思路分析

这道题目并不难,关键在于边界控制!每一层遍历均从左上角开始,逐层往里完成遍历。

Java代码实现

/**

* 由外向内顺时针打印矩阵数组

* @author Administrator

* @version 2018/10/12

*/

public class Exe31_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},{21,22,23,24}};

printMatrixClockWisely(matrix);

}

public static void printMatrixClockWisely(int[][] matrix) {

//参数合法性检查

if(matrix==null||matrix.length!=matrix[0].length){

throw new IllegalArgumentException();

}else {

int dimension=matrix.length;

int rowStart=0;

int colStart=0;

//分解工作,一圈一圈的打印

while(dimension>rowStart*2&&dimension>colStart*2){

printCircle(matrix, rowStart, colStart);

rowStart++;

colStart++;

}

}

}

private static void printCircle(int[][] matrix,int rowStart,int colStart) {

int dimension=matrix.length;

//从左向右打印

for(int i=colStart;i

System.out.print(matrix[rowStart][i]+" ");

}

//从上往下打印

for(int i=rowStart+1;i

System.out.print(matrix[i][dimension-rowStart-1]+" ");

}

//从右往左打印

for(int i=dimension-colStart-2;i>colStart-1;i--){

System.out.print(matrix[dimension-rowStart-1][i]+" ");

}

//从下往上打印

for(int i=dimension-rowStart-2;i>rowStart;i--){

System.out.print(matrix[i][colStart]+" ");

}

System.out.println();

}

}

java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵相关推荐

  1. LeetCode——剑指 Offer 29【顺时针打印矩阵】

    题目 剑指 Offer 29. 顺时针打印矩阵 题目概述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 限制: 0 <= matrix.length <= 100 0 & ...

  2. 【剑指offer】登峰造极--顺时针打印矩阵

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:747888 本题知识点: 数组 算法知识视频讲解 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序 ...

  3. 剑指offer最新版_剑指Offer——Java版本(持续更新)

    0 前言 邻近校招,算法要命!!! 本文为研究剑指Offer过程中的笔记,整理出主要思路以及Java版本题解,以便记忆和复习. 参考整理来自<剑指Offer 第二版>. 特别注意,对每道题 ...

  4. java输出栈的弹出序列_剑指offer:栈的压入、弹出序列(Java)

    1.题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是 ...

  5. java输出链表的值_[剑指offer] 从尾到头打印链表(三种方法) java

    一.每次把新遍历的链表值放到list索引为0的位置,实现逆序. public class Solution { public ArrayList printListFromTailToHead(Lis ...

  6. 剑指offer-面试题20.顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如: 输入一个矩阵如下: 1 1 2 3 4 2 5 6 7 8 3 9 10 11 12 4 13 14 15 16 则依次打印 ...

  7. java单个数组求积_[剑指offer][Java]构建乘积数组

    题目 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...A[i-1]A[i+1]...A[n-1].不能使用除法. 程 ...

  8. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  9. java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...

    分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分 ...

最新文章

  1. step by step YAML 复用
  2. Android 蓝牙4.0(BLE)开发实现对蓝牙的写入数据和读取数据
  3. 步入2021,大热的GNN会在哪些应用领域大展拳脚呢?
  4. hive清空外表数据
  5. 软件工程软件开发成本度量规范_软件开发成本度量方法
  6. 如何在 ASP.Net Core 中使用 LoggerMessage
  7. STM32——流水灯
  8. Java多线程_JUC包下的阻塞队列
  9. mysql8.0.15安装方法 mysql8安装教程
  10. 第九届蓝桥杯 明码2018
  11. sqlplus基础命令
  12. 中班音乐会跳舞的机器人_中班音乐律动机器人
  13. 蓝桥杯等差素数列-python
  14. 蜂鸣器播放天空之城详细解析
  15. 今天申请了亚马逊新加坡站点
  16. 无线基础知识学习(一)
  17. JAVA守护线程 非守护线程
  18. 数据结构基础之迭代法归并排序
  19. 机械加工工艺品配件的影响
  20. 往集合里面插数据,重复的不插入

热门文章

  1. 设计模式之观察者模式在Listview中的应用
  2. 【搜索/推荐排序】总结
  3. day52 Django全流程
  4. thriftpy2使用与流程
  5. Python——类与对象,异常处理
  6. 老李分享:基于图像识别的跨平台的手机自动化测试方案
  7. jQuery之防止【冒泡事件】,阻止默认行为 【return false】 event.stopPropagation event.preventDefault...
  8. 计算机网络IP分配大题,2018年IP分片网络大题
  9. php算法入门,a011.PHP实战:加密解密,简单算法入门
  10. 服务器热修复,热修复探究,hotfix,patch