注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

HT·生活

123

 
 
 

日志

 
 

ex48 Rotate Image  

2015-05-15 21:57:27|  分类: leetcode |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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?

其实就是下标对应的问题,好好计算观察一下结果,推演一下就出来了,下面是结果。
ex48 Rotate Image - HT - HT·生活
 

然后写程序就简单了,就是一个坐标变换的问题,见c代码

/*
*
* 开始矩阵是这样排序的
* 1 2 3 4
* 5 6 7 8
* 9 10 11 12
* 13 14 15 16
*后来变成
* 13 9 5 1
*14 10 6 2
* 15 11 7 3
* 16 12 8 4
* 可以看到它下标是从最右边开始的
*/

void rotate(int** matrix, int matrixRowSize, int matrixColSize) {
int i, j,k;
int len = matrixRowSize / 2;
int temp1,temp2;
int n = matrixRowSize;
for (k = n - 1; k >= len; k--)
{
// 有了k就可以算出i了
i = n - 1 - k;
//从外围到里面
for (j = i; j < k; j++)
{
temp1 = matrix[i][j];
//那么(i,j)的上一个节点是(n-j,i)
matrix[i][j] = matrix[n-1 - j][i];

// (i,j)的下一个节点是(j,n-i)
temp2 = matrix[j][n-1 - i];
matrix[j][n-1 - i] = temp1;

//(j,n-i)的下一个节点是(n-i,n-j)

temp1 = matrix[n-1 - i][n-1 - j];
matrix[n-1 - i][n-1 - j] = temp2;

// (n-i,n-j)下一个节点是 (n-j,i)
matrix[n-1 - j][i] = temp1;
}
//show(matrix, n, n);
}

}


  评论这张
 
阅读(14)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018