本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/44216867

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?

思路:

(1)题意为给定一个n*n的矩阵代表一幅图像,求将其顺时针旋转90度后所得矩阵。

(2)该题主要考察对二维数组的操作。n*n的矩阵显然是一个正方形,其实可对该题进行扩展为任意m*n的矩形,效果差不多。将n*n的矩阵形式化为一个n*n的二维数组,对二维数组的旋转就转化为对二维数组中元素位置的调整了,通过对比发现转换前后对应关系为:result[i][j] = matrix[row-1-j][i],其中result为新创建的数组用于存储转换后的

元素,matrix为目标数组。需要注意的是,得到result数组后还需将其中的元素赋值到原始数组中,才能达到对原始数组的旋转。详情见下方代码。

(3)希望本文对你有所帮助。

算法代码实现如下:

	/**
	 * @author liqqc
	 * @param matrix
	 * @return
	 */
    public static int[][]  rotate(int[][] matrix) {

    	if(matrix.length==0 ||matrix[0].length==0){
    		return null;
    	}

    	int row = matrix.length;
    	int col = matrix[0].length;

    	int[][] result = new int[row][col];

    	//第一行变为最后一列
    	for (int i = 0; i < row; i++) {
			for (int j = 0; j < col; j++) {
				result[i][j] = matrix[row-1-j][i];
			}
		}

    	for (int i = 0; i < result.length; i++) {
			for (int j = 0; j < result.length; j++) {
				matrix[i][j] = result[i][j];
			}
		}
    	return matrix;
    }

Leetcode_48_Rotate Image的更多相关文章

随机推荐

  1. Scala:访问修饰符、运算符和循环

    http://blog.csdn.net/pipisorry/article/details/52902234 Scala 访问修饰符 Scala 访问修饰符基本和Java的一样,分别有:privat ...

  2. 将Gradle项目发布到Jcenter和Maven Central

    Jcenter和Maven Central 为了方便我们理解Android studio是如何帮助我们获取开源库的,我们需要理清几个概念.Apache Maven是Apache开发的一个工具,提供了用 ...

  3. 自定义progressDialog(数据加载框)的实现

    大家在开发客户端时基本上都需要获取数据,在获取数据时会有一个等待状态,这时我们可以利用系统自带的progressDialog来向用户展示"数据正在加载中..."等等,但有时我们会觉 ...

  4. Python 通过继承实现标准对象的子类

    idict是dict的子类,它的键值和属性是同步的,并且有强大的默认值机制. 例如,假设x是idict的一个实例,且x['a']['b']=12,则有x.a.b=12.反之亦然; 假设'c'不在x的键 ...

  5. Linux 环境下一些常用命令(四)

    转自 http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users 31. 命令: rm 'rm ...

  6. RxJava(六) retryWhen操作符实现错误重试机制

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51539708 本文出自:[余志强的博客] 业务需求 当我们在app里 ...

  7. Freemarker 浅析

    今天分享一下一个模板语言的使用,它就是Freemarker,有点类似与前些日子做Python的Django中的模板语言,其实原理上都是相似的.所以这里就不对那些基础性的语法类的直至进行讲解了,就拿几个 ...

  8. 为何不能在viewDidLoad方法中显示其他视图

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可以使得当视图控制器(view controller)显示自 ...

  9. gitlab的搭建及问题的解决

    gitlab则是类似于github的一个工具,github无法免费建立私有仓库,并且为了代码安全,于是在内网安装了一个自己实验室的一个git服务器,gitlab有很多依赖,而bitnami制作了一键安 ...

  10. SYBASE的select into与insert into使用和区别

    对于表的部分或全部字段的复制,Sybase数据库提供了两种方式:select into和insert into. select into: 语法:select  value1, value2, val ...