剑指offer 面试题20 顺时针打印矩阵
2017-05-27 17:24
519 查看
剑指offer 面试题20 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针依次打印出每一个数字。例如,如果输入矩阵如下:
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。
package algorithm.foroffer.top20; /** * Created by liyazhou on 2017/5/27. * 面试题20:顺时针打印矩阵 * * 题目: * 输入一个矩阵,按照从外向里以顺时针依次打印出每一个数字。 * 例如,如果输入矩阵如下: * 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 Test20 { public static void printMatrixClockwisely(int[][] matrix){ if (matrix == null) return; int rows = matrix.length; int cols = matrix[0].length; int start = 0; // 没有发现这规律,不会定义这条件 while (rows > 2 * start && cols > 2 * start){ printMatrixCircle(matrix, start); start ++; } } private static void printMatrixCircle(int[][] matrix, int start) { int rows = matrix.length; int cols = matrix[0].length; int endX = cols - 1 - start; int endY = rows - 1 - start; // 从左到右打印一行 for (int i = start; i <= endX; i++){ int number = matrix[start][i]; System.out.print(number + " "); } // 从上到下打印一列 if (start < endY){ for (int i = start + 1; i <= endY; i++){ int number = matrix[i][endX]; System.out.print(number + " "); } } // 从右到左打印一行 if (start < endX && start < endY){ for (int i = endY - 1; i >= start; i--){ int number = matrix[endY][i]; System.out.print(number + " "); } } // 从下到上打印一列 if (start < endX && start < endY - 1){ for (int i = endY - 1; i >= start + 1; i--){ int number = matrix[i][start]; System.out.print(number + " "); } } } public static void main(String[] args){ int[][] matrix = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} }; printMatrixClockwisely(matrix); } }
相关文章推荐
- (剑指Offer)面试题20:顺时针打印矩阵
- 剑指Offer_面试题20_顺时针打印矩阵
- 《剑指offer》面试题20 顺时针打印矩阵
- 剑指offer 面试题20:顺时针打印矩阵及其变形(LeetCode54. Spiral Matrix旋转矩阵) 题解
- 剑指Offer:面试题20——顺时针打印矩阵(java实现)
- 剑指Offer系列-面试题20:顺时针打印矩阵
- 剑指offer 面试题20:顺时针打印矩阵
- 剑指offer-面试题20-顺时针打印矩阵
- leetcode-54 Spiral Matrix 顺时针打印矩阵(《剑指offer》面试题20)
- 《剑指Offer》学习笔记--面试题20:顺时针打印矩阵
- 面试题20顺时针打印矩阵
- 剑指offer-面试题20 顺时针打印矩阵
- 面试题20:顺时针打印矩阵(Leetcode-54和57)
- 剑指offer-面试题20:顺时针打印矩阵
- 剑指offer——面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 剑指offer面试题20-顺时针打印矩阵
- 面试题20:顺时针打印矩阵 ***
- 面试题20:顺时针打印矩阵
- 【剑指offer】4.2画图让抽象问题形象化——面试题20:顺时针打印矩阵