ให้เมทริกซ์ หาเมทริกซ์ใหม่ res[i][j] = ผลรวม matrix[r][c] สำหรับ r ≤ i, c ≤ j
ตัวอย่าง: [[8,2],[7,4]] → [[8,10],[15,21]]
ขั้นตอน (In-place 2-pass)
- Prefix Sum แนวตั้ง:
matrix[r][c] += matrix[r-1][c] - Prefix Sum แนวนอน:
matrix[r][c] += matrix[r][c-1] - คืนค่าเมทริกซ์ที่แก้ไขแล้ว
ตัวอย่างโค้ด
def solve(matrix):
if not matrix:
return matrix
R, C = len(matrix), len(matrix[0])
for r in range(1, R):
for c in range(C):
matrix[r][c] += matrix[r-1][c]
for r in range(R):
for c in range(1, C):
matrix[r][c] += matrix[r][c-1]
return matrix
matrix = [[8, 2], [7, 4]]
print(solve(matrix)) # Output: [[8, 10], [15, 21]]อินพุต
[[8, 2],[7, 4]]
เอาต์พุต
[[8, 10], [15, 21]]