【剑指offer】面试题20:顺时针打印矩阵
来源:互联网 发布:淘宝坡跟女鞋 编辑:程序博客网 时间:2024/06/06 02:39
//题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.
// 例如矩阵: 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
思路:我们可以定义四个方向顺次打印,然后做好边界检测功能
我们的边界条件是什么呢?打印一圈我们会发现我们要打印的矩阵的长宽各减小了2。因此,我们可以知道循环继续的条件是columns>startX*2并且rows>startY*2.
void PrintMatrixClockwisely(int **numbers, int columns, int rows){ //参数检测 if (numbers == NULL || columns <= 0 || rows <= 0) { return; } int start = 0; while (columns > start * 2 && rows > start * 2) { //对四个边进行打印 PrintMatrixInCircle(numbers,columns,rows,start); ++ start; }}void PrintMatrixInCircle(int** numbers, int columns, int rows, int start){ //既然需要打印,我们需要知道打印的起点和终点 //起点我们知道,每打印一圈的时候,都是从numbers[start][start]开始打印的 //那对于终点来讲,我们需要知道,有两个变,所以就有两个结束条件 //我们定义两个变量:endX, endY来标记我们的终点 int endX = rows-1 - start; int endY = columns-1 - start; //从左到右打印一行 for (int i = start; i <= endY; ++i) { printNumber(number[start][i]); } //从上到下打印一列 //***需要注意的是:最后一圈可能退化成一行、一列、甚至只有一个数字,所以打印这样一圈就不需要四行了 if (start < endY) { for (int i = start; i <= endY; ++i) { printNumber(number[start][i]); } } //下边 if (start < endX&&start < endY) { for (int i = start; i < endY; ++i)//有没有等于号呢 { printNumber(number[start][i]); } } //左边 if (start < endX&&start < endY - 1) { for (int i = start; i < endY; ++i)//有没有等于号呢 { printNumber(number[start][i]); } }}
0 0
- 《剑指offer》面试题:顺时针打印矩阵
- 剑指offer面试题 顺时针打印矩阵
- 剑指offer面试题20顺时针打印矩阵
- [剑指offer][面试题20]顺时针打印矩阵
- 剑指offer 面试题20:顺时针打印矩阵
- 《剑指offer》面试题20顺时针打印矩阵
- 【剑指offer】面试题20:顺时针打印矩阵
- 剑指offer 面试题20 顺时针打印矩阵
- 剑指Offer:面试题20 顺时针打印矩阵
- 《剑指Offer》面试题20:顺时针打印矩阵
- 剑指offer 面试题20—顺时针打印矩阵
- 《剑指Offer》学习笔记--面试题20:顺时针打印矩阵
- 剑指offer--面试题20:顺时针打印矩阵--Java实现
- 【剑指Offer学习】【面试题20 : 顺时针打印矩阵】
- 剑指offer面试题20-顺时针打印矩阵
- 剑指offer-面试题20:顺时针打印矩阵
- 剑指offer之面试题20:顺时针打印矩阵
- 剑指offer之面试题20顺时针打印矩阵
- java连接数据库(MySql)
- 激活IntelliJ IDEA Ultimate 2016
- Eclipse中如何快速查看jar包中 的class源码
- CCF CSP 最优配餐 BFS
- 自动类型转换与强制转换
- 【剑指offer】面试题20:顺时针打印矩阵
- 75:Validate Binary Search Tree
- C++中的explicit关键字
- 什么时候使用redis
- 【3.7】
- Mybatis-mybatis开发结构及讲解
- Opencv图像处理坐标系认识
- Google Speech API
- EFLAGS寄存器