leetcode 832. Flipping an Image(python)

描述

Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resulting image.

To flip an image horizontally means that each row of the image is reversed. For example, flipping [1, 1, 0] horizontally results in [0, 1, 1].

To invert an image means that each 0 is replaced by 1, and each 1 is replaced by 0. For example, inverting [0, 1, 1] results in [1, 0, 0].

Example 1:

Input: [[1,1,0],[1,0,1],[0,0,0]]
Output: [[1,0,0],[0,1,0],[1,1,1]]
Explanation: First reverse each row: [[0,1,1],[1,0,1],[0,0,0]].
Then, invert the image: [[1,0,0],[0,1,0],[1,1,1]]

Example 2:

Input: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
Output: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
Explanation: First reverse each row: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]].
Then invert the image: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]

Notes:

1 <= A.length = A[0].length <= 20
0 <= A[i][j] <= 1

解析

这里的题意比较简单,如果是常规做法可能代码很繁琐,在本解答算法中主要用到了 Python 中的一些 list 索引的使用小技巧,还有位运算的小知识点。

解答

class Solution(object):
def flipAndInvertImage(self, A):
    """
    :type A: List[List[int]]
    :rtype: List[List[int]]
    """
    for row in A:
        for i in range((len(row)+1)/2):
            row[i], row[~i] = row[~i]^1, row[i]^1
    return A

运行结果

Runtime: 36 ms, faster than 81.20% of Python online submissions for Squares of a Sorted Array.
Memory Usage: 11.7 MB, less than 55.29% of Python online submissions for Squares of a Sorted Array.

每日格言:与魔鬼战斗的人,应当小心自己不要成为魔鬼。当你远远凝视深渊时,深渊也在凝视你。

上一篇:LeetCode-832 Flipping an Image Solution (with Java)


下一篇:力扣刷题记录#数组#简单#832翻转图像