Java 算法-旋转图像(矩阵处理)

  今天在lintCode做了一道题,自己想了一下做法,做出来,但是觉得有必要记录下来。

题意:
给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。
样例:
给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]
挑战:
能否在原地完成?

1.解题思路

  这个题乍一看懵逼,其实非常的简单。下面我用图来表示解题思路:


2.代码

public void rotate(int[][] matrix) {
        if (matrix.length == 0 || matrix[0].length == 0) {
            return;
        }
        //顺时针旋转270度
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < i; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        //逆时针旋转180度
        for(int i = 0; i < matrix.length; i++) {
            for(int j = 0; j < matrix[0].length / 2; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][matrix[0].length - 1 - j];
                matrix[i][matrix[0].length - 1 - j] = temp;
            }
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  •   今天在lintCode上做了一道题,非常的简单,但是解题的思路太巧妙了,觉得有必要记录下来! 1.概览 (1)...
    琼珶和予阅读 740评论 0 0
  •   首先说明一下,看这个博客之前,最好有线段树的基本概念,比如说线段树的构造、线段树的查询之类的。最近在学习ANd...
    琼珶和予阅读 539评论 0 0
  •   说实话,在数据结构中,拓扑排序我掌握的不是很好,今天在lintCode上面做了关于拓扑排序的题,才开始还是有点...
    琼珶和予阅读 1,472评论 0 0
  • 高中生如何整理错题经验 题主是一名高一学生。在我的学习生涯里,很少有收集错题的习惯。但是一直听别人建议收集错题,说...
    菁颜阅读 5,663评论 1 20