<LeetCode OJ> 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 question

Hide Tags

Array

分析:

通过实际数据分析,通过两个步骤的元素交换可实现目标:

按照主对角线,将对称元素交换

按照列,将对称列元素全部交换

即可达到,使得二维矩阵,本地旋转90个角度。

代码如下:

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n=matrix.size();
        //一,对角线对换
        for(int i=0;i<n-1;i++)//列
        {
            for(int j=0;j<n-1-i;j++)//行
            {
                int tmp=matrix[j][i];
                matrix[j][i]=matrix[n-1-i][n-1-j];
                matrix[n-1-i][n-1-j]=tmp;
            }
        }
        //二,水平线对换
        for(int i=0;i<n;i++)//列
        {
            for(int j=0;j<n/2;j++)//行
            {
                int tmp=matrix[j][i];
                matrix[j][i]=matrix[n-1-j][i];
                matrix[n-1-j][i]=tmp;
            }
        }
    }
};

注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!

原文地址:http://blog.csdn.net/ebowtang/article/details/51588641

原作者博客:http://blog.csdn.net/ebowtang

本博客LeetCode题解索引:http://blog.csdn.net/ebowtang/article/details/50668895

时间: 2024-10-01 04:19:22

<LeetCode OJ> 48. Rotate Image的相关文章

LeetCode OJ 61. Rotate List 考虑边界条件

题目链接:https://leetcode.com/problems/rotate-list/ 61. Rotate List My Submissions QuestionEditorial Solution Total Accepted: 71917 Total Submissions: 311425 Difficulty: Medium Given a list, rotate the list to the right by k places, where k is non-negati

【一天一道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

LeetCode OJ 61. Rotate List

Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL. Subscribe to see which companies asked this question 解答: 不是很懂这道题的通过率

LeetCode OJ: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]. 将数组的内容倒置,看例子就知道是什么意思: 1 class Solution { 2 public: 3 void rotate(vector<int>& nums, int k) { 4 if(

LeetCode OJ 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

笔试题61. LeetCode OJ (48)

这个题的意思是给你一个2D的图像(我们知道2D图像是由(x,y)像素点组成的),题目要求我们将这幅图形顺时针旋转90度,确实是一个比较有趣的题目. 如果你是第一次拿到这个题的话确实比较难动手,但是一旦你见过这类似的题目(比如:剑指offer上面的螺旋数组),那么你就瞬间有思路了.我先画个图解释一下这个题的思路: 主要思路也是由外向里,每次旋转掉一层,重复上面操作,知道循环到最里面,这时候就完成了整体的旋转.代码: class Solution { public: void rotate(vect

Python 解leetcode:48. Rotate Image

题目描述:把一个二维数组顺时针旋转90度: 思路: 对于数组每一圈进行旋转,使用m控制圈数: 每一圈的四个元素顺时针替换,可以直接使用Python的解包,使用k控制每一圈的具体元素: class Solution(object): def rotate(self, matrix): """ :type matrix: List[List[int]] :rtype: void Do not return anything, modify matrix in-place inst

LeetCode OJ - Surrounded Regions

我觉得这道题和传统的用动规或者贪心等算法的题目不同.按照题目的意思,就是将被'X'围绕的'O'区域找出来,然后覆盖成'X'. 那问题就变成两个子问题: 1. 找到'O'区域,可能有多个区域,每个区域'O'都是相连的: 2. 判断'O'区域是否是被'X'包围. 我采用树的宽度遍历的方法,找到每一个'O'区域,并为每个区域设置一个value值,为0或者1,1表示是被'X'包围,0则表示不是.是否被'X'包围就是看'O'区域的边界是否是在2D数组的边界上. 下面是具体的AC代码: class Boar

LeetCode OJ - Subsets 1 &amp;&amp; 2

这道题的做法,一定得掌握啊!!!  elegant & beautiful & concise 下面是AC代码: 1 /** 2 * Given a set of distinct integers, S, return all possible subsets. 3 * 这道题的做法应该要记住!!!!! 4 * @param s 5 * @return 6 */ 7 public ArrayList<ArrayList<Integer>> subsets(int[