C++程序 在顺时针方向将第 i 行正好旋转 i 次以修改矩阵
给定一个维度为 M x N 的矩阵 mat[][] ,任务是打印出每一个 i th 行旋转 i 次之后得到的矩阵。
例子:
输入: mat[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
输出:
1 2 3
6 4 5
8 9 7
解释:
第 0 行旋转 0 次。因此第 0 行保持不变 {1, 2, 3}。
第 1 行旋转 1 次。因此第 1 行修改为 {6, 4, 5}。
第 2 行旋转 2 次。因此第 2 行修改为 {8, 9, 7}。
完成上述操作后,给定矩阵变为{{1, 2, 3}, {6, 4, 5}, {8, 9, 7}}。
输入: mat[][] = {{1, 2, 3, 4}, {4, 5, 6, 7}, {7, 8, 9, 8}, {7, 8, 9, 8}}
输出:
1 2 3 4
7 4 5 6
9 8 7 8
8 9 8 7
方法: 按以下步骤解决问题。
- 按行为单位遍历矩阵,并对于每一个 i th 行,执行以下操作:
- 反转当前行。
- 反转当前行的前 i 个元素。
- 反转当前行的后面 (N – i) 个元素,这里 N 是当前行的长度。
- 完成上述步骤后,打印矩阵 mat[][] 。
以下是上述方法的 C++ 实现:
输出:
时间复杂度 : O(N*M)
,因为我们使用嵌套循环遍历N*M次。
辅助空间 : O(1),因为我们没有使用任何额外的空间。