LeetCode 48
2016-05-20 21:23
218 查看
这个题的意思是给你一个2D的图像(我们知道2D图像是由(x,y)像素点组成的),题目要求我们将这幅图形顺时针旋转90度,确实是一个比较有趣的题目。
如果你是第一次拿到这个题的话确实比较难动手,但是一旦你见过这类似的题目(比如:剑指offer上面的螺旋数组),那么你就瞬间有思路了。我先画个图解释一下这个题的思路:
主要思路也是由外向里,每次旋转掉一层,重复上面操作,知道循环到最里面,这时候就完成了整体的旋转。代码:
class Solution { public: void rotate(vector<vector<int>>& matrix) { int num = matrix.size(); for (int i = 0; i < num / 2; ++i) {//每次旋转一层 rotateOne(matrix, i); } } void rotateOne(vector<vector<int>>& matrix, int begin) { int len = matrix.size() - 2 * begin - 1; int tmp = 0; for (int i = len; i >= 1; --i) {// 旋转 tmp = matrix[begin][begin + i]; matrix[begin][begin + i] = matrix[begin + len - i][begin]; matrix[begin + len - i][begin] = matrix[begin + len][begin + len - i]; matrix[begin + len][begin + len - i] = matrix[begin + i][begin + len]; matrix[begin + i][begin + len] = tmp; } } };结果:
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C++联合体转换成C#结构的实现方法
- C#实现的算24点游戏算法实例分析
- C++高级程序员成长之路
- C++编写简单的打靶游戏