顺时针打印矩阵(旋转矩阵)
题目描述
提交代码时,主要的问题出在没有控制好后两个for循环,需要加入条件判断,防止出现单行或者单列的情况。
/*
* 1.选坐标为(0,0),(1,1)...的点记为(start,start)为开始坐标,下一圈开始坐标为(start+1,start+1)
* 2.判断是否进入下一圈(即是否打印完成)的条件是row>start*2 && column>start*2
* 3.打印一圈的左上角坐标为(start,start),右下角的坐标为(column-start-1,row-start-1)
* 4.根据一圈左上角和右下角坐标判断“从左到右”,“从上到下”,“从右到左”,“从下到上”哪些用打印,哪些不用
*/
#include <iostream>
#include <vector>using namespace std;vector<int> printMatrix(vector<vector<int> > matrix)
{vector<int> res;if (matrix.size() == 0) return res;int cols = matrix[0].size();int rows = matrix.size();if (cols <= 0 || rows <= 0) return res;int start = 0;while (cols > start * 2 && rows > start * 2){int endX = cols - 1 - start;int endY = rows - 1 - start;//从左到右for (int i = start; i <= endX; i++)res.push_back(matrix[start][i]);//从上到下if (endY > start){for (int i = start + 1; i <= endY; i++)res.push_back(matrix[i][endX]);}//从右到左if (endY > start&&endX > start){for (int i = endX - 1; i >= start; i--)res.push_back(matrix[endY][i]);}//从下到上if (endY > start + 1 && endX > start){for (int i = endY - 1; i >= start + 1; i--)res.push_back(matrix[i][start]);}start++;}return res;
}int main()
{vector<vector<int> > matrix = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } };vector<int> res = printMatrix(matrix);for (auto num : res)cout << num << " ";cout << endl;system("pause");return 0;
}
顺时针打印矩阵(旋转矩阵)相关推荐
- 剑指offer-python:27.旋转矩阵and顺时针打印矩阵and逆时针打印
旋转矩阵是顺时针打印矩阵的前提.首先,学会旋转矩阵,后面就容易了. 1.旋转矩阵:如下所示,旋转效果 [[1,2,3], [[7,4,1],[4,5,6], ---> [8,5,2],[7,8, ...
- python顺时针打印矩阵_python实现顺时针打印矩阵
面试题之顺时针打印矩阵,Python实现,供大家参考,具体内容如下 问题描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,输入如下矩阵: 则依次打印出数字1,2,3,4,8, ...
- 顺时针打印矩阵(编程题讲解)
顺时针打印矩阵 题目描述 题目分析 python代码 使用python矩阵的旋转 矩阵的转置代码 python旋转矩阵解法代码 <剑指offer> 编程题讲解. 题目描述 输入 ...
- python将矩阵顺时针旋转90度_python实现顺时针打印矩阵
面试题之顺时针打印矩阵,Python实现,供大家参考,具体内容如下 问题描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,输入如下矩阵: 则依次打印出数字1,2,3,4,8, ...
- 剑指offer:面试题29. 顺时针打印矩阵
题目:顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9 ...
- 【剑指offer】顺时针打印矩阵
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...
- 剑指offer十九之顺时针打印矩阵
一.题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...
- 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
<LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...
- 【剑指offer-Java版】20顺时针打印矩阵
顺时针打印矩阵:重在理解,毕竟作者分析的那个方法看起来还是蛮复杂的-所以自己写了个接地气的方法 重在逻辑的一个题,一次性完全写对还是比较困难的 public class _Q20 {public vo ...
最新文章
- 找不到可安装的ISAM”的问题
- MySQL下载与配置
- 网工基础测试题(附HCIA题库)
- python3的 time库的使用
- extjs多选下拉树
- 用conda安装虚拟的R环境
- KNN实现CIFAR-10数据集识别
- 博主已开启评论精选什么意思_小白必看!想要成为小红书博主,首先要掌握4个工具!...
- 3月第一周中国五大顶级域名增6万 美国增1.8万
- 贺利坚老师汇编课程51笔记:MUL乘法指令
- webapp开发技术选型
- Java中几种高性能的队列
- doubango编码及发送流程的疑惑
- 最优化方法——Newton方法
- JavaScript函数重载(js函数重载)
- 3D游戏引擎技术剖析
- 2022年数学建模C题优秀论文
- 大数据技能大赛题目(高职组,模块C和D)
- 新冠疫情对AI技术发展的影响
- 【优化理论与方法】图解法