Cho một ma trận nhị phân mat. Với mỗi hàng trong ma trận, ta đảo ngược thứ tự các phần tử rồi lật từng bit (0 thành 1, 1 thành 0).
Ví dụ: đầu vào
| 1 | 1 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
Đầu ra:
| 1 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
Các bước giải quyết
- Khởi tạo
track = 0 - Với mỗi hàng
rowtrongmat:- Đảo ngược hàng:
row.reverse() - Khởi tạo
tracker = 0 - Với mỗi giá trị
valtrong hàng:- Nếu
val == 1thì gánmat[track][tracker] = 0 - Ngược lại gán
mat[track][tracker] = 1 - Tăng
trackerlên 1
- Nếu
- Tăng
tracklên 1
- Đảo ngược hàng:
- Trả về
mat
Ví dụ mã Python
class Solution:
def solve(self, mat):
track = 0
for row in mat:
row.reverse()
tracker = 0
for val in row:
if val == 1:
mat[track][tracker] = 0
else:
mat[track][tracker] = 1
tracker += 1
track += 1
return mat
ob = Solution()
mat = [[1,1,0],[0,1,0],[0,0,1]]
print(ob.solve(mat))
Đầu vào
[[1,1,0],[0,1,0],[0,0,1]]
Đầu ra
[[1, 0, 0], [1, 0, 1], [0, 1, 1]]