สมมติว่าเรามีเมทริกซ์ เราต้องหาจำนวนเต็มที่มีค่ามากที่สุดในแถวและคอลัมน์ของมัน
ดังนั้นหากอินพุตเป็นแบบ
1 | 3 | 2 |
4 | 6 | 5 |
1 | 5 | 7 |
จากนั้นผลลัพธ์จะเป็น 2 เนื่องจาก 6 และ 7 ถูกต้อง
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
mat :=เมทริกซ์
-
r_maxes :=ทำรายการองค์ประกอบสูงสุดของเสื่อแต่ละแถว
-
c_maxes :=ทำรายการองค์ประกอบสูงสุดของแต่ละคอลัมน์ของเสื่อ
-
a :=รายการใหม่
-
สำหรับ r ในช่วง 0 ถึงจำนวนแถว - 1 ทำ
-
สำหรับ c ในช่วง 0 ถึงจำนวนคอลัมน์ - 1 ทำ
-
v :=mat[r, c]
-
ถ้า r_maxes[r] คือ v และ c_maxes[c] คือ v ดังนั้น
-
ใส่ v ต่อท้าย a
-
-
-
-
ขนาดส่งคืนของ a
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, matrix): mat = matrix trans_mat = list(zip(*matrix)) print(mat, trans_mat) r_maxes = [max(row) for row in mat] c_maxes = [max(t_row) for t_row in trans_mat] a = [] for r in range(len(mat)): for c in range(len(trans_mat)): v = mat[r][c] if (r_maxes[r], c_maxes[c]) == (v, v): a.append(v) return len(a) ob = Solution() matrix = [ [1, 3, 2], [4, 6, 5], [1, 5, 7] ] print(ob.solve(matrix))
อินพุต
[[1, 3, 2], [4, 6, 5], [1, 5, 7]]
ผลลัพธ์
2