博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode] Rotate Image
阅读量:6496 次
发布时间:2019-06-24

本文共 1488 字,大约阅读时间需要 4 分钟。

hot3.png

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:先按主对角线翻转一次,然后左右再翻转一次。每个元素需要两次移动,但是好理解,不易出错。

思路2:直接计算坐标替换,每个元素一次移动即可。

扩展:类似的剑指offer上的 旋转打印矩形内元素的题目,也是坐标操作很麻烦,需利用left,right,up,down四个bar的方法仔细处理。

思路1:

public class Solution {	public void rotate(int[][] matrix) {		if (matrix == null)			return;		int n = matrix.length;		int i, j;		for (i = 0; i < n; i++)			for (j = 0; j < i; j++) {				int tmp = matrix[i][j];				matrix[i][j] = matrix[j][i];				matrix[j][i] = tmp;			}		for (i = 0; i < n; i++)			for (j = 0; j < n / 2; j++) {				int tmp = matrix[i][n - 1 - j];				matrix[i][n - 1 - j] = matrix[i][j];				matrix[i][j] = tmp;			}	}	public static void main(String[] args) {		// int[][] matrix = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }		// };		int[][] matrix = new int[][] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 },				{ 9, 10, 11, 12 }, { 13, 14, 15, 16 } };		new Solution().rotate(matrix);	}}

思路2:

public void rotate2(int[][] matrix) {        if (matrix == null)            return;        printMatrix(matrix);        for (int i = 0, j = matrix.length - 1; i < j; i++, j--) {            for (int k = i, d = j; k < j; k++, d--) {                int t = matrix[i][k];                matrix[i][k] = matrix[d][i];                matrix[d][i] = matrix[j][d];                matrix[j][d] = matrix[k][j];                matrix[k][j] = t;            }        }

转载于:https://my.oschina.net/jdflyfly/blog/284331

你可能感兴趣的文章
0x00linux32位汇编初入--前期准备
查看>>
hive基本操作与应用
查看>>
[转]深入理解Batch Normalization批标准化
查看>>
Js测试框架学习笔记(一)
查看>>
centos断网调试
查看>>
JS 在指定数组中随机取出N个不重复的数据
查看>>
php 正则替换
查看>>
NPM 模块收集
查看>>
ReactNative 环境的搭建和启动(安卓版)
查看>>
DEX文件的签名和校验(翻译)
查看>>
Silverlight显示数据库二进制字段图片(RadTileView)
查看>>
斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
查看>>
《坦克世界》1.0+:使用 CPU 优化的图形和物理丰富用户体验
查看>>
【Udacity】解决:字幕遮挡视频内容怎么办?Udacity字幕大小调整
查看>>
POJ 1159, Palindrome
查看>>
Java并发之AQS详解
查看>>
锐捷网络笔试分享—应用软件开发
查看>>
HDFS架构剖析
查看>>
在IOS中使用json
查看>>
Orlion个人博客 | 全栈工程师之路-www.orlion.ga
查看>>