第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}