ภาพรวม
โจทย์นับจำนวนเซลล์ในมาทริกซ์ที่มีค่าเป็นค่าสูงสุด (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