[leedcode 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?

In order to fulfill the follow up requirement,  i.e. in-place, we should utilize a temporary int variable and switch the values in the matrix.  Coming back to our problem, rotating a matrix can be divided into steps and each step responses to rotating specific layer of the matrix.  For example, when n=6 there are n/2 = 3 steps from outside layers to inside layers.

public class Solution {
    /*public void rotate(int[][] matrix) {
        //本题一定要注意边界。每一层循环代表反转一层(从外到内循环),一共有len/2层。注意j的取值,j>=i,j<len-i-1;

        int len=matrix.length;
        for(int i=0;i<len/2;i++){
            for(int j=i;j<len-i-1;j++){
                int temp=matrix[i][j];
                matrix[i][j]=matrix[len-1-j][i];
                matrix[len-1-j][i]=matrix[len-1-i][len-1-j];
                matrix[len-1-i][len-1-j]=matrix[j][len-i-1];
                matrix[j][len-i-1]=temp;

            }
        }
    }*/

    public void rotate(int[][] matrix) {
        //本题的另一种解法,首先沿着水平中线翻转一次,然后沿着主对角线,翻转一次,最终能够实现顺时针旋转90度
        //或者,首先沿着副对角线翻转一次,然后沿着水平中线翻转一次。
        int len=matrix.length;
        int i=0;
        int j=0;
        for(;i<len/2;i++){
            for(j=0;j<len;j++){
                int temp=matrix[i][j];
                matrix[i][j]=matrix[len-1-i][j];
                matrix[len-1-i][j]=temp;

            }
        }
        for(i=0;i<len;i++){
            for(j=i+1;j<len;j++){
                int temp=matrix[i][j];
                matrix[i][j]=matrix[j][i];
                matrix[j][i]=temp;

            }
        } 

    }
}
时间: 2024-11-04 23:55:02

[leedcode 48] Rotate Image的相关文章

48. Rotate Image(js)

48. Rotate Image You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Note: You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D

48.Rotate Image

You are given an n x n 2D matrixrepresenting an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? HideTags Array #pragma once #include<iostream> #include<vector> using namespace std; //[i,j]->[j,n-i]-

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? 思路:把矩阵看成是由多个正方形一层一层包围起来的.转动的时候就是转动正方形的边,只要把边上的每个数依次替换就好,四个方向也就是进行四次替换,依次对每一层进行替换. 总层数 = matrix.length/2,第i层从第mat

LeetCode 48. Rotate Image My Submissions Question (矩阵旋转)

题目大意:给一个矩阵,将其按顺时针旋转90°. 题目分析:通法是先将矩阵转置,然后再反转每一行,或者是先反转每一列,然后再将其转置.I just want to say"It's amazing!".(forgivig my poor English!) 代码如下(代码怎么写已经不重要了!): class Solution { public: void rotate(vector<vector<int>>& matrix) { int r=matrix.

48. Rotate Image (Graph)

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? class Solution { public: void rotate(vector<vector<int> > &matrix) { int temp; for(int i = 0; i <

[leedcode 189] Rotate Array

Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]. Note:Try to come up as many solutions as you can, there are at least 3 different ways to solve this pro

48. Rotate Image java solutions

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? 题目大意是将矩阵做就地顺时针90度旋转. 1 public class Solution { 2 public void rotate(int[][] matrix) { 3 int n = matrix.length; 4

&lt;LeetCode OJ&gt; 48. Rotate Image

Total Accepted: 69879 Total Submissions: 199786 Difficulty: Medium 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? Subscribe to see which companies asked this

【一天一道LeetCode】#48. Rotate Image

一天一道LeetCode系列 (一)题目 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? (二)解题 90度旋转图像,我们不难看出 matrix[i][j]=tmp[j][n?i?1]注:tmp=matrix 经过这样的变换后,图像就旋转了90度. class Solu