LeetCode刷题之832.翻转图像
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
给定一个二进制矩阵A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转[1,1,0]的结果是[0,1,1]。反转图片的意思是图片中的0全部被1替换,1全部被0替换。例如,反转[0, 1, 1]的结果是[1, 0, 0]。 - 示例:
示例1:
输入: [[1,1,0],[1,0,1],[0,0,0]]
输出: [[1,0,0],[0,1,0],[1,1,1]]
解释: 首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];然后反转图片:[[1,0,0],[0,1,0],[1,1,1]]
示例2:
输入: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
输出: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解释: 首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]]; 然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
- 说明:
• 1 <= A.length = A[0].length <= 20
• 0 <= A[i][j] <= 1 - 代码1:
class Solution:
def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]:
for i in range(len(A)):
A[i] = A[i][::-1]
for j in range(len(A)):
A[i][j] = A[i][j] ^1
return(A)
- 算法说明:
在第一层循环中,将A中的每一行翻转,实现水平翻转;然后将A中的元素与1进行异或,完成图像反转。 - 代码2:
class Solution:
def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]:
for i in range(len(A)):
a = A[i][::-1]
for j in range(len(A)):
if A[i][j] == a[j]:
A[i][j] = 1 - A[i][j]
return A
- 算法说明:
将A的元素倒序赋值给a,然后判断A和A中对应位置的元素,如果相等,则用1 - A[i][j]代替A[i][j]即可。