剑指offer之顺时针打印矩阵
来源:互联网 发布:汇天下p2p源码 编辑:程序博客网 时间:2024/05/29 16:06
1.分析
每次以左上角为标志打印一圈,a[0][0]最外圈,a[1][1]次外圈,依次类推,a[k][k], 2
*
k<rows && 2*
k<cols不越界即可打印一圈分为4步,a:从左往右打印上面一行,b:从上往下打印右侧一列,c:从右往左打印下面一行,d:从下往上打印左侧一列
最后一圈有可能退化到只有一步(一行),两步(一列),或者三步(2行)。第一步骤a是必不可少的.
2.代码
#include<stdio.h>void printCircle(int** a, int rows, int cols, const int leftUp){ int i; int endX = cols - 1 - leftUp; int endY = rows - 1 - leftUp; for(i=leftUp; i<=endX; i++)//打印上面一横行 printf("%d ", a[leftUp][i]); for(i=leftUp+1; i<=endY; i++)//打印右侧一竖列,注意i=leftUp+1,不然右上角重复 printf("%d ", a[i][endX]); for(i=endX-1; i>=leftUp; i--) printf("%d ", a[endY][i]);//从右往左打印下面一横行,注意i=endX-1,不然右下角重复 for(i=endY-1; i>leftUp; i--) printf("%d ", a[i][leftUp]);//从下往上打印左侧一竖列,注意i=endY-1,不然左下角重复,i>leftUp,不带等号,不然左上角重复 printf("\n");}void printMatrix(int** a, int rows, int cols){ if(a==NULL || rows<=0 || cols<=0) return; for(int i=0; i*2<rows && i*2<cols; i++) { printCircle(a, rows, cols, i);//打印以a[i][i]为左上角的一圈 }}
0 0
- 《剑指offer》学习之--顺时针打印矩阵
- 剑指Offer之 - 顺时针打印矩阵
- 【剑指offer】之顺时针打印矩阵
- 剑指offer(十六)之顺时针打印矩阵
- 剑指offer之顺时针打印矩阵
- 剑指offer 之 顺时针打印矩阵
- 剑指offer之十八---顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 图像偏色检测算法,速度快,效果好,共享给大家。
- android ScrollView嵌套viewpager,viewpager嵌套gridview,解决内嵌无法显示的问题
- ubuntu下安装flash player
- 从性能指标角度看ARM Cortex-M各处理器区别
- Decode String(leetcode),solved by DFS
- 剑指offer之顺时针打印矩阵
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
- 角点绘制2
- 求1+2!+3!+...+20!的和。
- BNUOJ 52296 Nearest Neighbor Search(十一弱校联盟 暴力分情况)
- 【CUDA开发】Thrust库
- 【C++研发面试笔记】9. 基本数据结构-二叉查找树BST
- 利用递归方法求5!。
- 树状数组点更新,区间更新理解