Giả sử chúng ta có một mat ma trận nhị phân. Chúng ta phải chọn từng hàng trong ma trận, sau đó đảo ngược mũi tên. Sau đó, lật từng bit (0 thành 1 và 1 thành 0).
Vì vậy, nếu đầu vào giống như
1 | 1 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
thì đầu ra sẽ là
1 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- theo dõi:=0
- đối với mỗi hàng trong thảm, thực hiện
- đảo ngược hàng
- trình theo dõi:=0
- đối với mỗi val trong hàng, hãy thực hiện
- nếu val là 1, thì
- mat [track, tracker]:=0
- nếu không,
- mat [track, tracker]:=1
- trình theo dõi:=tracker + 1
- nếu val là 1, thì
- track:=track + 1
- chiếu trở lại
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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]]