프로그래밍/Python
[leetcode] Flipping an Image
research_notes
2023. 4. 12. 16:01
728x90
반응형
Given an n x n binary matrix image, 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: image = [[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: image = [[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]]
Solution
from typing import List
import copy
input1 = [[1,1,0],[1,0,1],[0,0,0]]
# output1 = [[1,0,0],[0,1,0],[1,1,1]]
input2 = [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
# output2 = [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
def flipAndInvertImage(A: List[List[int]]) -> List[List[int]]:
# (0) copy the input
B = copy.deepcopy(A)
#B = A[:] # shallow copy
# (1) horizontally flipping
for i in range(len(B)):
for j in range(len(B[0])):
if j < len(B[0])/2:
B[i][j], B[i][-1-j] = B[i][-1-j], B[i][j]
else:
break
# (2) inverting
for i in range(len(A)):
for j in range(len(A[0])):
if B[i][j] == 1:
B[i][j] = 0
else: # B[i][j] == 0
B[i][j] = 1
# (3) return
return B
출처: leetcode.com/problems/flipping-an-image
728x90
반응형