目录
1,题目描述
2,解题思路
基本思路
细节
图片
1,题目描述
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:
Given input matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
],
rotate the input matrix in-place such that it becomes:
[
[7,4,1],
[8,5,2],
[9,6,3]
]
Example 2:
Given input matrix =
[
[ 5, 1, 9,11],
[ 2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]
],
rotate the input matrix in-place such that it becomes:
[
[15,13, 2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-image
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2,解题思路
基本思路
每次处理一圈;
以每圈中的第一行为准,
第1行的第1个元素依次与第1行的第n个元素、第n行的第n个元素、第n行的第1个元素交换,
第1行的第2个元素依次与第2行的第n个元素、第n行的第n-1个元素、第n-1列的第1个元素交换,
第1行的第3个元素依次与第3行的第n个元素、第n行的第n-2个元素、第n-2列的第1个元素交换,
......
第1行的第n-1个元素依次与......交换.
至此,第一圈的元素已交换完毕,开始下一圈。
细节
- 判断是否循环:圈的边长度大于1(1或0均不再执行)
- 注意更新圈的起点newBegin与边界newRightEdge
图片
3,代码【C】