Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาตัวเลขที่ใหญ่ที่สุดในแถวและคอลัมน์ของมาทริกซ์ Python

ภาพรวม

โจทย์นับจำนวนเซลล์ในมาทริกซ์ที่มีค่าเป็นค่าสูงสุด (max) ทั้งในแถวและในคอลัมน์ของมัน

ตัวอย่าง

มาทริกซ์:

[[1, 3, 2],
 [4, 6, 5],
 [1, 5, 7]]

Row max: [3, 6, 7]

Col max: [4, 6, 7]

เซลล์ที่เป็น max ทั้งแถวและคอลัมน์:

  • (1,1): 6 = row_max[1] และ col_max[1] ✓
  • (2,2): 7 = row_max[2] และ col_max[2] ✓

รวม 2 เซลล์

โค้ด Python

class Solution:
    def solve(self, matrix):
        mat = matrix
        trans_mat = list(zip(*matrix))  # transpose
        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))

เทคนิค zip(*matrix)

zip(*matrix) ทำ transpose (แถว↔คอลัมน์) ได้แบบ Pythonic

ผลลัพธ์

2