Skip to content

Commit 736261c

Browse files
authored
Update Readme.md
1 parent db930c6 commit 736261c

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

Others/048.Rotate-Image/Readme.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
### 048.Rotate-Image
22

3-
将整个方阵分为四个象限。可以想象,将整个方阵旋转90度,就等于将各个象限关于坐标原点旋转90度。特别需要注意到,四个象限分别有一个点,这四个点在旋转过程中是彼此重合的。我们以4\*4的方阵为例:对于左下角的坐标A(0,1),对应的左上角的位置是B(1,0),右上角的位置是C(2,3),右下角的位置是D(3,2).我们如果将方阵旋转一周,这四个点的元素会分别变成B,C,D,A。
3+
#### 解法1
4+
将整个方阵分为四个象限。可以想象,将整个方阵瞬时间旋转90度,就等于将各个象限关于坐标原点旋转90度。特别需要注意到,四个象限分别有一个点,这四个点在旋转过程中是彼此重合的。我们以4\*4的方阵为例:对于左下角的坐标A(0,1),对应的左上角的位置是B(1,0),右上角的位置是C(2,3),右下角的位置是D(3,2).我们如果将方阵旋转一周,这四个点的元素会分别变成B,C,D,A。
45

56
所以我们只要遍历一个象限中的所有点,让每个点调整它在四个象限中对应的位置即可。比如说在第一象限中的(x,y),旋转后在下一个象限中的位置就是(N-1-y,x)。我们将象限I与II交换,再把II与III交换,再把III与IV交换,注意通过三次交换,而不是四次,即可将这四个点形成旋转90的效果。举个例子:ABCD->BACD->BCAD->BCDA.
67

@@ -10,3 +11,6 @@ for (int i=0; i<N/2; i++)
1011
for (int j=0; j<(N+1)/2; j++)
1112
...
1213
```
14+
15+
#### 解法2
16+
有一个更容易记忆的方法,分两步走。对于形如 [A,B;D,C]的方针,我们先上下翻转,得到[D,C;A,B]。然后我们对这个方针求转置,得到的是[D',A';C',B'],而这个恰好就是原方阵顺时针旋转90度的结果。

0 commit comments

Comments
 (0)