面试题20:顺时针打印矩阵
2016-07-06 16:09
363 查看
比较复杂,见P128解析
另一种方法:
http://blog.csdn.net/Irean_Lau/article/details/51072768
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) { int endX = columns - 1 - start; int endY = rows - 1 - start; // 从左到右打印一行 for(int i = start; i <= endX; ++i) { int number = numbers[start][i]; printNumber(number); } // 从上到下打印一列 if(start < endY) { for(int i = start + 1; i <= endY; ++i) { int number = numbers[i][endX]; printNumber(number); } } // 从右到左打印一行 if(start < endX && start < endY) { for(int i = endX - 1; i >= start; --i) { int number = numbers[endY][i]; printNumber(number); } } // 从下到上打印一行 if(start < endX && start < endY - 1) { for(int i = endY - 1; i >= start + 1; --i) { int number = numbers[i][start]; printNumber(number); } } }
另一种方法:
http://blog.csdn.net/Irean_Lau/article/details/51072768
/* 20 :> 顺时针打印数组 */ vector<int> printMatrix(vector<vector<int> > matrix) { vector<int>res; res.clear(); int row = matrix.size();//行数 int col = matrix[0].size();//列数 int circle = ((row < col ? row : col) - 1) / 2 + 1;//圈数 for (int i = 0; i < circle; i++) { //zuo->you for (int j = i; j < col - i; ++j) res.push_back(matrix[i][j]); //shang->xia for (int k = i + 1; k < row - i; ++k) res.push_back(matrix[k][col - i - 1]); //you->zuo for (int l = col - i - 2; (l >= i) && (row - i - 1 != i); --l) res.push_back(matrix[row - i - 1][l]); //xia->shang for (int m = row - i - 2; (m > i) && (col - i - 1 != i); --m) res.push_back(matrix[m][i]); } return res; }
相关文章推荐
- 软件测试工程师面试(一)
- 华为公司面试题
- Java程序员修炼之路
- 剑指Offer:面试题16——反转链表(java实现)
- java面试中的高并发的问题
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
- 黑马程序员:Android实战升级课震撼上线
- PHP 程序员的技术成长规划
- 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
- 动态规划 解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 剑指Offer:面试题14——调整数组顺序使奇数位于偶数前面(java实现)
- 【转】面向程序员的数据库访问性能优化法则
- 深入理解Java之《突破程序员基本功》之类集框架 ---------读书笔记------持续更新
- 面试题19:二叉树镜像
- 面试题18:二叉树与子结构
- 面试编程题---其中隐藏着若干0,其余非0整数,使A把0移至后面,非0整数移至数组前面并保持有序
- 黑马程序员——集合框架的工具类
- [转]为什么程序员总是写糟糕的代码?这3个原因
- 苦闷的程序员
- .NET面试题系列