【leetcode】【48】Rotate Image

一、问题描述

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?

二、问题分析

首先明确题意:将一个n阶方阵顺时针旋转90度。

这种类型的题目往往涉及大量的“交换”,如果我吧第一行直接挪到最后一列(采用覆盖的方式而非交换),那么最后一列又会挪到最后一行,循环依赖。因此我们可以换个角

度,即采用“交换”操作,比如,行行交换,列列交换,转置交换等等。题目中90度顺时针旋转,会将行变为列,显然在各种交换类型中,转置可以做到,只不过转置完成后再进

行列的交换即可。

三、Java AC 代码

public void rotate(int[][] matrix) {
		int row = matrix.length;
		int col = matrix[0].length;
		for (int i = 0; i < row; i++) {
			for (int j = i+1; j < col; j++) {
				int tmp = matrix[i][j];
				matrix[i][j] = matrix[j][i];
				matrix[j][i] = tmp;
			}
		}
		for (int i = 0; i < row; i++) {
			for (int j = 0, k = col-1; j < k; j++, k--) {
				int tmp = matrix[i][j];
				matrix[i][j] = matrix[i][k];
				matrix[i][k] = tmp;
			}
		}
	}



你可能感兴趣的:(java,LeetCode,array)