zoukankan      html  css  js  c++  java
  • 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?

    方阵顺时针旋转90度,方法:

    1. 按行reverse
    2. 交换元素 A[i, j] = A[j, i]

    逆时针90度方法:

    1. 按列reverse
    for (auto vi : matrix) reverse(vi.begin(), vi.end());
    
    1. 交换元素 A[i, j] = A[j, i]

    代码们:

    // clockwise rotate
    // 1. 按行reverse  2. 交换元素 A[i, j] = A[j, i]
    /*
     * clockwise rotate
     * first reverse up to down, then swap the symmetry
     * 1 2 3     7 8 9     7 4 1
     * 4 5 6  => 4 5 6  => 8 5 2
     * 7 8 9     1 2 3     9 6 3
    */
    void rotate(vector<vector<int>>& A) {
    	const int n = A.size();
    	reverse(A.begin(), A.end());
    
    	for (int i = 0; i < n; i++) {
    		for (int j = i + 1; j < n; j++) {
    			swap(A[i][j], A[j][i]);
    		}
    	}
    }
    
    /*
     * anticlockwise rotate
     * first reverse left to right, then swap the symmetry
     * 1 2 3     3 2 1     3 6 9
     * 4 5 6  => 6 5 4  => 2 5 8
     * 7 8 9     9 8 7     1 4 7
    */
    void anti_rotate(vector<vector<int>>& A) {
    	const int n = A.size();
    	for(atuo vi : A) reverse(vi.begin(), vi.end());
    
    	for (int i = 0; i < n; i++) {
    		for (int j = i + 1; j < n; j++) {
    			swap(A[i][j], A[j][i]);
    		}
    	}
    }
    
  • 相关阅读:
    2019.9.21 Tomcat基于端口的虚拟主机
    shell脚本作业
    DNS原理及其解析过程
    用户管理系统脚本
    pxe批量装机
    磁盘分区挂载脚本
    安装apache脚本
    linux远程拷贝命令及not a regular file 解决方案
    卸载虚拟网卡的方法
    watch的用法
  • 原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7422475.html
Copyright © 2011-2022 走看看