LeetCode Rotate Image(矩阵的旋转)
2015-07-18 10:50
489 查看
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
题意:给出一个矩阵,问顺时针旋转90的矩阵
思路:假设矩阵的维数为n,则(x,y)矩阵后的位置为(y,n - 1 -x),其整个变换过程为(x,y)->(y, n - 1 - x)->(n - 1 -x, n - 1 - y)->(n - 1 - y, x)->(x, y)
具体代码如下
public class Solution {
public void rotate(int[][] matrix)
{
int n = matrix.length;
int m = n / 2;
for (int i = 0; i < m; i++)
{
for (int j = i; j < n - 1 - i; j++)
{
int startx = i, starty = j;
int x = startx, y = starty;
int newx = y, newy = n - 1 - x;
int tmp1 = matrix[x][y], tmp2;
while (newx != startx || newy != starty)
{
tmp2 = matrix[newx][newy];
matrix[newx][newy] = tmp1;
x = newx; y = newy;
newx = y; newy = n - 1 - x;
tmp1 = tmp2;
}
matrix[startx][starty] = tmp1;
}
}
}
}
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
题意:给出一个矩阵,问顺时针旋转90的矩阵
思路:假设矩阵的维数为n,则(x,y)矩阵后的位置为(y,n - 1 -x),其整个变换过程为(x,y)->(y, n - 1 - x)->(n - 1 -x, n - 1 - y)->(n - 1 - y, x)->(x, y)
具体代码如下
public class Solution {
public void rotate(int[][] matrix)
{
int n = matrix.length;
int m = n / 2;
for (int i = 0; i < m; i++)
{
for (int j = i; j < n - 1 - i; j++)
{
int startx = i, starty = j;
int x = startx, y = starty;
int newx = y, newy = n - 1 - x;
int tmp1 = matrix[x][y], tmp2;
while (newx != startx || newy != starty)
{
tmp2 = matrix[newx][newy];
matrix[newx][newy] = tmp1;
x = newx; y = newy;
newx = y; newy = n - 1 - x;
tmp1 = tmp2;
}
matrix[startx][starty] = tmp1;
}
}
}
}
相关文章推荐
- select, iocp, epoll,kqueue及各种I/O复用机制
- Volatile
- 数字的空洞
- 银行储蓄系统完整版
- css扩展技术:Less和Sass的区别
- jquery三级联动
- Longest Words
- Scroller类的使用(用来在ViewGroup里面让子view经常优美 的滑动)
- java 内部类简单分析
- 堆排序
- malloc(0)返回什么地址?
- Android 开发 计时器的实现
- 「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别?网页代码一般使用哪个?
- 有的人——理我,是因为我有快乐我好
- 提自己——我和我的家人,利害关系
- centos 6.5 源码安装apache
- 设置input标签按tab键时不获取焦点的方法
- 【学习】近期的学习计划表(更新中)
- apiI翻译App
- TCP详解(3):重传、流量控制、拥塞控制……