像素翻转
2016-09-22 14:52
197 查看
阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。
测试样例:
返回:[[7,4,1],[8,5,2],[9,6,3]]
import java.util.*;
public class Transform {
public int[][] transformImage(int[][] mat, int n) {
// write code here
// int layer = mat.length / 2;
for(int layer = 0; layer < n / 2; layer ++){
int first = layer;
int last = n - layer - 1;
for(int i = first; i < last; i ++){
int top = mat[first][i];
//left to top
mat[first][i] = mat[n - 1 - i][first];
// down to left
mat[n - 1 - i][first] = mat[last][n - 1 - i];
// right to down
mat[last][n - 1 - i] = mat[i][last];
//top to right
mat[i][last] = top;
}
}
return mat;
}
}
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。
测试样例:
[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]
import java.util.*;
public class Transform {
public int[][] transformImage(int[][] mat, int n) {
// write code here
// int layer = mat.length / 2;
for(int layer = 0; layer < n / 2; layer ++){
int first = layer;
int last = n - layer - 1;
for(int i = first; i < last; i ++){
int top = mat[first][i];
//left to top
mat[first][i] = mat[n - 1 - i][first];
// down to left
mat[n - 1 - i][first] = mat[last][n - 1 - i];
// right to down
mat[last][n - 1 - i] = mat[i][last];
//top to right
mat[i][last] = top;
}
}
return mat;
}
}
相关文章推荐
- 谈谈我的8年编程自学辛酸史
- 你知道RxJava也可以实现AsyncTask吗?
- python---生成随机密码
- 查看Android系统是User模式还是Eng模式
- c#中的gcAllowVeryLargeObjects和OutOfMemoryException
- Android沉浸式(侵入式)标题栏(状态栏)Status(二)
- mysql无法启动! 错误号1067
- 关于ehcache的timeToLiveSeconds和timeToIdleSeconds
- Java中的内部类和匿名类
- Maven Enforcer Plugin
- EzRgnBtn 控件的四种显示状态:mouse down,mouse up,hot,enable
- java多线程总结
- VBS中对Error的处理
- Android沉浸式(侵入式)标题栏(状态栏)Status(二)
- C# 调用BarTender模板 打印
- weekend110(Hadoop)的 第四天笔记
- 防止自己的网站被别人frame引用造成钓鱼
- Angular表达式
- 利用WCF双工模式实现即时通讯
- 基于obs studio 的源码应用