832. 翻转图像
给定一个二进制矩阵 A
,我们想先水平翻转图像,然后反转图像并返回结果。
水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0]
的结果是 [0, 1, 1]
。
反转图片的意思是图片中的 0
全部被 1
替换, 1
全部被 0
替换。例如,反转 [0, 1, 1]
的结果是 [1, 0, 0]
。
示例 1:
1 | 输入:[[1,1,0],[1,0,1],[0,0,0]] |
示例 2:
1 | 输入:[[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]] |
提示:
1 <= A.length = A[0].length <= 20
0 <= A[i][j] <= 1
方法一:双指针
对于每一行元素,我们使用 left 和 right 指针来对该行元素进行水平翻转和反转操作。
left | right | 处理后left | 处理后right | |
---|---|---|---|---|
① | 0 | 0 | 1 | 1 |
② | 0 | 1 | 0 | 1 |
③ | 1 | 0 | 1 | 0 |
④ | 1 | 1 | 0 | 0 |
我们可以发现,当 left 和 right 指向的值相等时时,元素才需要变化,只用用该元素与 1 异或。
1 | class Solution { |
- 时间复杂度O(n^2)
- 空间复杂度O(1)