旋转图像

题目:

给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像

样例:

给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]

思路:

  • 思路一:先将矩阵转置,然后每一列的元素反转;(可画图理解)
  • 思路二:找出每个元素旋转后的矩阵位置,即a[i] [j]==>a[j] [n-1-i]。
    这种方法很容易在for循环的条件设置中出错,由于每次转换四个数a[n-1-j] [i],a[i] [j],a[j] [n-1-i],a[n-1-i] [n-1-j],对于每一次循环数会从i,n-1-i收缩,所以i只要循环n/2次就好了;对于数,从i开始,到n-1-i。
    还有一处需要注意:a[i] [j] ==> a[j] [n-i-1]的数学表达式应该是a[j] [n-i-1] = a[i] [j]。

参考答案:

class Solution {
public:
    /*
     * @param matrix: a lists of integers
     * @return: 
     */
    void rotate(vector> &matrix) {
        // write your code here
      /*思路一:先转置,再反转
        int n= matrix.size();
        for(int i=0 ;i

你可能感兴趣的:(算法,矩阵)