สมมติว่าเรามีเมทริกซ์เมทริกซ์ไบนารี เราต้องเลือกแต่ละแถวในเมทริกซ์ แล้วกลับแถว หลังจากนั้น ให้พลิกแต่ละบิต (0 ถึง 1 และ 1 ถึง 0)
ดังนั้นหากอินพุตเป็นแบบ
1 | 1 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
แล้วผลลัพธ์ที่ได้จะเป็น
1 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ติดตาม:=0
- สำหรับแต่ละแถวในเสื่อ ทำ
- กลับแถว
- ตัวติดตาม :=0
- สำหรับแต่ละ val ในแถว ทำ
- ถ้าวาลเป็น 1 แล้ว
- mat[ตัวติดตาม] :=0
- มิฉะนั้น
- mat[ตัวติดตาม] :=1
- ตัวติดตาม :=ตัวติดตาม + 1
- ถ้าวาลเป็น 1 แล้ว
- แทร็ก :=แทร็ก + 1
- เสื่อคืน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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))
อินพุต
[[1,1,0],[0,1,0],[0,0,1]]
ผลลัพธ์
[[1, 0, 0], [1, 0, 1], [0, 1, 1]]