剑指offer-顺时针打印矩阵
来源:互联网 发布:redial 软件 编辑:程序博客网 时间:2024/05/16 04:58
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如, 如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10
题目分析
顺时针打印矩阵,无非是将矩阵从左到右,然后从上到下,接着从右到左,最后从下到上,打印一圈,再从外到里,打印全部的圈。
public class 顺时针打印矩阵 { public ArrayList<Integer> printMatrix(int[][] matrix) { ArrayList<Integer> arr = new ArrayList<Integer>(); if (matrix == null) return null; int start = 0; while (matrix[0].length > start * 2 && matrix.length > start * 2) { printOneCircle(matrix, start, arr); start++; } return arr; } private void printOneCircle(int[][] array, int start, ArrayList<Integer> arr) { int columns = array[0].length;//1 int rows = array.length;//5 int endX = columns - 1 - start;//0 int endY = rows - 1 - start;//4 // 从左到右打印一行 for (int i = start; i <= endX; i++) { int number = array[start][i]; arr.add(number); } // 从上到下打印一列 if (start < endY) { for (int i = start + 1; i <= endY; i++) { int number = array[i][endX]; arr.add(number); } } // 从右到左打印一行 if (start < endX && start < endY) { for (int i = endX - 1; i >= start; i--) { int number = array[endY][i]; arr.add(number); } } // 从下到上打印一列 if (start < endX && start < endY - 1) { for (int i = endY - 1; i >= start + 1; i--) { int number = array[i][start]; arr.add(number); } } } public static void main(String[] args) { int[][] arr = { {1},{2},{3},{4},{5} }; 顺时针打印矩阵 test = new 顺时针打印矩阵(); System.out.println(test.printMatrix(arr).size()); for(int i=0;i<test.printMatrix(arr).size();i++) System.err.println(test.printMatrix(arr).get(i)); }}
0 0
- 【剑指offer】顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- [剑指offer]顺时针打印矩阵
- 《剑指offer》-顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer|顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指Offer:顺时针打印矩阵
- 移动构造-C++11
- JavaScript高级程序设计之面向对象的程序设计之创建对象之 构造函数模式第6.2.2讲笔记
- 软件测试基础知识点整理
- Top 30 Nmap Command Examples For Sys/Network Admins
- 天声人語 20150927
- 剑指offer-顺时针打印矩阵
- JavaScript高级程序设计之面向对象的程序设计之创建对象之原型模式 第6.2.3讲笔记
- iOS开发:音乐播放器
- 一个程序员的时间管理“辛”路历程
- 线程池
- 软件工程
- 最短路spfaPOJInvitation Cardsj解题报告
- C语言程序初体验-第十一课-第五题:角度转换
- [LeetCode] Unique Binary Search Trees(!!DP)