สมมติว่าเรามีเมทริกซ์ 2D และชุดดัชนีเซลล์ (i, j) สำหรับแต่ละเซลล์ ต้องการหาผลรวมของสมาชิกทั้งหมดในเมทริกซ์ ยกเว้นแถวที่ i และคอลัมน์ที่ j
เช่น เมทริกซ์ 3x3 และ indices = [(0,0), (1,1), (0,1)] ผลลัพธ์คือ [19, 14, 20]
ขั้นตอนการแก้ปัญหา
- คำนวณผลรวมทั้งหมดของเมทริกซ์
- คำนวณผลรวมแต่ละแถวและแต่ละคอลัมน์
- สำหรับแต่ละคำถาม (i, j): คำตอบ = total_sum - row_sum[i] - col_sum[j] + mat[i][j] (เพราะ mat[i][j] ถูกลบซ้ำ)
ตัวอย่างโค้ด Python
def show_sums(mat, ind_arr):
total = sum(sum(row) for row in mat)
row_sums = [sum(row) for row in mat]
col_sums = [sum(mat[i][j] for i in range(len(mat))) for j in range(len(mat[0]))]
ans = []
for i, j in ind_arr:
s = total - row_sums[i] - col_sums[j] + mat[i][j]
ans.append(s)
return ans
mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]]
ind_arr = [(0, 0), (1, 1), (0, 1)]
print(show_sums(mat, ind_arr))
อินพุต
mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]], ind_arr = [(0, 0), (1, 1), (0, 1)]
เอาต์พุต
[19, 14, 20]