第92天。
今天的题目是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 matrix and do the rotation.
Example 1:
1Given input matrix =2[3  [1,2,3],4  [4,5,6],5  [7,8,9]6],7
8rotate the input matrix in-place such that it becomes:9[10  [7,4,1],11  [8,5,2],12  [9,6,3]13]Example 2:
1Given input matrix =2[3  [ 5, 1, 9,11],4  [ 2, 4, 8,10],5  [13, 3, 6, 7],6  [15,14,12,16]7],8
9rotate the input matrix in-place such that it becomes:10[11  [15,13, 2, 5],12  [14, 3, 4, 1],13  [12, 6, 8, 9],14  [16, 7,10,11]15]虽然是一道Medium的题目,但是还是比较简单的。
主要的思路是一圈一圈的进行旋转,不断缩减,直到不需要旋转的时候:
1void rotate(vector<vector<int>>& matrix) {2    int beg = 0, end = matrix.size() - 1;3    int temp;4    while(beg < end) {5        int size = end - beg;6        for(int i = 0;i < size;i++) {7            temp = matrix[beg+i][beg];8            matrix[beg+i][beg] = matrix[end][beg+i];9            matrix[end][beg+i] = matrix[end-i][end];10            matrix[end-i][end] = matrix[beg][end-i];11            matrix[beg][end-i] = temp;12        }13        beg++; end--;14    }15}