Giả sử ta có một ma trận nhị phân A, đây là biểu diễn của một hình ảnh. Ta muốn lật hình ảnh theo chiều ngang, sau đó đảo ngược nó, và cuối cùng trả về hình ảnh kết quả. Để lật theo chiều ngang, mỗi hàng của hình ảnh sẽ được đảo ngược. Để đảo ngược, mỗi 0 sẽ được thay bằng 1, và mỗi 1 sẽ được thay bằng 0.
Ví dụ, nếu đầu vào là:
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 0 | 0 |
thì đầu ra sẽ là:
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |
Để giải quyết, ta thực hiện các bước sau:
- result := một danh sách mới
- Với mỗi hàng i trong A, thực hiện:
- Reverse := đảo ngược hàng i
- Với j từ 0 đến kích thước của Reverse, thực hiện:
- Nếu Reverse[j] bằng 1, thì:
- Reverse[j] := 0
- Ngược lại:
- Reverse[j] := 1
- Nếu Reverse[j] bằng 1, thì:
- Thêm Reverse vào cuối result
- Trả về result
Hãy xem triển khai sau để hiểu rõ hơn:
Ví dụ
class Solution: def flipAndInvertImage(self, A): result = [] for i in A: Reverse = i[::-1] for j in range(len(Reverse)): if Reverse[j] == 1: Reverse[j] = 0 else: Reverse[j] = 1 result.append(Reverse) return result ob = Solution() print(ob.flipAndInvertImage([[1,1,0],[1,0,1],[0,0,0]]))
Đầu vào
[[1,1,0],[1,0,1],[0,0,0]]
Đầu ra
[[1, 0, 0], [0, 1, 0], [1, 1, 1]]