สมมติว่าเรามีเมทริกซ์ไบนารี 2 มิติ โดย 1 แทนระเบิด 0 แทนเซลล์ว่าง เมื่อระเบิดระเบิด ทุกเซลล์ในแถวและคอลัมน์เดียวกันจะได้รับความเสียหาย หาจำนวนเซลล์ที่ยืนอยู่ได้ปลอดภัย (ไม่ได้รับความเสียหาย)
ตัวอย่าง
เมทริกซ์:
[[1, 1, 0],
[0, 0, 0],
[0, 0, 0]]
เอาต์พุต: 2
เซลล์ปลอดภัยคือ (1,2) และ (2,2) (ดัชน์เริ่มจาก 0)
ขั้นตอนการแก้ปัญหา
- สร้างอาร์เรย์
rขนาดจำนวนแถว และcขนาดจำนวนคอลัมน์ เริ่มต้นFalse - วนลูปผ่านเมทริกซ์ ถ้า
matrix[i][j] == 1ตั้งr[i] = True, c[j] = True - นับ
ct= จำนวนเซลล์ที่r[i] == False and c[j] == False - คืนค่า
ct
การนำไปใช้ใน Python
class Solution:
def solve(self, matrix):
r = [False for i in range(len(matrix))]
c = [False for i in range(len(matrix[0]))]
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 1:
r[i] = True
c[j] = True
ct = 0
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if r[i] == False and c[j] == False:
ct += 1
return ct
ob = Solution()
matrix = [
[1, 1, 0],
[0, 0, 0],
[0, 0, 0]
]
print(ob.solve(matrix))
อินพุต
[[1, 1, 0], [0, 0, 0], [0, 0, 0]]
เอาต์พุต
2