RotateImage问题

旋转图像问题。

在计算机中图片都是以二进制数组存储的,所以旋转图像问题就对应于数组变换的问题。
输入:一个二维数组
输出:clockwise 旋转90°后的二维数组

用例:
用例

分析

还是类似于找规律的问题。可以发现 m[i][j] = m[n-1-j][i]

思路

每一轮做一个类似闭环的4个元素交换


元素交换示意图

唯一要注意的就是循环结束条件。

代码

package day_11;

import java.util.Arrays;
// 数组顺时针旋转 90°的问题。
// 观察到一个规律就是说 m[i][j] = m[n-1-j][i]
// 由于不能allocate 一个新的二维数组。 下面就要做一个闭环的交换
public class RotateImage {
    public void rotate(int[][] matrix){
        int n = matrix.length;
        for (int i=0;i<n/2;i++){
            for(int j=0;j<(n+1)/2;j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[n-1-j][i];
                matrix[n-1-j][i] = matrix[n-1-i][n-1-j];
                matrix[n-1-i][n-1-j] = matrix[j][n-1-i];
                matrix[j][n-1-i] = temp;
            }
        }
    }

    public static void main(String args[]){
        int a[][] = {{5,1,9,11},{2,4,8,10},{13,3,6,7},{15,14,12,16}};
        RotateImage r = new RotateImage();
        r.rotate(a);
        for(int i=0;i<a.length;i++){
            System.out.print(Arrays.toString(a[i]));
            }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容