一道有意思的小题--图片翻转

今天在刷leetcode时偶遇一道比较有意思的小题:48. Rotate Image,图片翻转。题目的大概意思是,如果我们用一个n*n的二维矩阵来表示一个图片的话,我们如何将这个图片顺时针旋转90度。具体来说,是这样的:

1 2 3                 7 4 1

4 5 6    --->>    8 5 2

7 8 9                 9 6 3

在网上看了若干解决方法,都是旋转好几遍之类的,都没看懂。于是我突发奇想:如果先将矩阵转置,然后再将矩阵每一行里的元素翻转,好像结果是我们想要的。之所以称之为突发奇想就是并没有办法证明我的想法的科学性。。。Java代码如下。

public void rotate(int[][] matrix) {
        int row = matrix.length;
		for(int i = 0; i < row; ++i){
			int col = matrix[i].length;
			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 start = 0, end = col-1; start < end; start++, end--){
				int tmp = matrix[i][start];
				matrix[i][start] = matrix[i][end];
				matrix[i][end] = tmp;
			}
		}
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值