package com.exe4.offer;

 import java.util.ArrayList;
/**
* 17【题目】输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
* @author WGS
*
*/
public class PrintArraysInCircle { public ArrayList<Integer> printArraysClock(int[][] arrs){
int rows=arrs.length;
int columns=arrs[0].length;
if(arrs==null || rows<=0 || columns<=0)
return null; ArrayList<Integer> list=new ArrayList<Integer>();
//起点坐标
int count=0;
while(columns>count*2 && rows>count*2){
printArraysInCircle(list,arrs,columns,rows,count);
count++;
}
return list;
} public void printArraysInCircle(ArrayList<Integer> list,int[][] arrs,int columns,int rows,int count) {
int endX=columns-1-count;
int endY=rows-1-count;
int number=0; //从左到右打印》》》》》》
for(int i=count;i<=endX;i++){
list.add(arrs[count][i]);
}
//从上到下打印
if(count<endX){
for(int i=count+1;i<=endY;i++){
list.add(arrs[i][endX]);
}
}
//从右到左
if(count<endX && count<endY){
for(int i=endX-1;i>=count;i--){
list.add(arrs[endY][i]);
}
}
//从下到上
if(count<endX && count<endY-1){
for(int i=endY-1;i>=count+1;i--){
list.add(arrs[i][count]);
}
} } public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] arrs = new int[4][4];
arrs[0] = new int[]{1,2,3,4};
arrs[1] = new int[]{5,6,7,8};
arrs[2] = new int[]{9,10,11,12};
arrs[3] = new int[]{13,14,15,16};
// matrix[4] = new int[]{17,18,19,20}; PrintArraysInCircle p = new PrintArraysInCircle();
ArrayList<Integer> list = p.printArraysClock(arrs);
for (Integer integer : list) {
System.out.print(integer+" ");
}
} }

剑指offer系列17---顺时针打印矩阵(不是很懂)的更多相关文章

  1. 剑指offer 20:顺时针打印矩阵

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

  2. 剑指offer系列18---顺时针打印矩阵

    [题目]定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数.要求时间复杂度是O(1).push pop min [思路]设计一个辅助栈,当新加入的原数据栈中的数小于辅助栈顶的数时就加 ...

  3. 剑指offer系列33-----把二叉树打印成多行

    [题目]从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 方法一:直接打印 package com.exe7.offer; import java.util.LinkedList; i ...

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

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

  5. 干货 | 剑指offer系列文章汇总

    下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现  剑指offer系列  始 剑指offer—灯管问题(1)  剑指offer—10人电梯(2)  ...

  6. 剑指Offer - 九度1515 - 打印1到最大的N位数

    剑指Offer - 九度1515 - 打印1到最大的N位数2013-11-30 01:11 题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案 ...

  7. 【剑指Offer】把二叉树打印成多行 解题报告(Python)

    [剑指Offer]把二叉树打印成多行 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  8. 剑指offer 面试17题

    面试17题: 题目:打印从1到最大的n位数 题:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1.2.3一直到最大的3位数999. 解题思路:需要考虑大数问题,这是题目设置的陷 ...

  9. Go语言实现:【剑指offer】把二叉树打印成多行

    该题目来源于牛客网<剑指offer>专题. 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 需要分层,二维数组. Go语言实现: /** * Definition for ...

随机推荐

  1. tablet 的使用

    之前一直用jbrowse  发现有些信息展示的不准确,如浏览一个bam文件的比对情况.在某一位点,深度为1000,但是浏览器显示的小于1000,并且read也经常会缺少.所以果断放弃jbrowse,用 ...

  2. 发布b3log-solo后,访问http://localhost:8080/b3log-solo/提示错误为staticServePath Error。

    发布b3log-solo后,访问http://localhost:8080/b3log-solo/提示错误为staticServePath Error. latke.props内容为: serverS ...

  3. 快排算法(C++版)

    #include <iostream> using namespace std; /** Quick Sort * * split: cmp && swap * left ...

  4. 对石家庄铁道大学官网UI设计的分析

    在这一周周一,老师给我们讲了PM,通过对PM的学习,我知道了PM 对项目所有功能的把握, 特别是UI.最差的UI, 体现了团队的组织架构:其次, 体现了产品的内部结构:最好, 体现了用户的自然需求.在 ...

  5. UVa 12100打印队列(队列)

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  6. leetcode 102 Binary Tree Level Order Traversal ----- java

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  7. 使用配置方式进行ssh的整合以及管理员管理的案例(二)

    (续) 删除Hibernate配置文件的写法: 在applicationContext.xml中添加数据库操作的相关配置: <!-- 配置数据库连接池 -->    <bean id ...

  8. 黑马程序员——JAVA基础之单列设计模式

    ------- android培训.java培训.期待与您交流! ---------- 单列设计模式是面试中的一个常考的点,所谓单例模式就是说对象在内存中只能存在一个.如果有其他变量是该类对象,那么他 ...

  9. (转) ICCV 2015:21篇最火爆研究论文

          ICCV 2015:21篇最火爆研究论文 ICCV 2015: Twenty one hottest research papers   “Geometry vs Recognition” ...

  10. VS 2012 C#快捷键

    ctrl + J 重现智能提示 ctrl + L    删除一行ctrl + K ctrl + C 注释选中行ctrl +K ctrl +U    取消注释 ctrl +K ctrl +F    格式 ...