1314. Matrix Block Sum 详细解答
解法1: Brute Force
题目理解:求出距离某个元素为K的所有元素的累加和。
比如:[[1, 2, 3],
??? [4, 5, 6],
??? [7, 8, 9]]
元素4,若 k=1。
距离元素4为1的元素包括1, 2, 5, 7, 8, 最后得到的累加和为 1+2+4+5+7+8 = 27.
所以答案中在元素4的位置变为了27
暴力求解的方式很简单,在遍历到每一个元素时,直接求出距离为k的所有元素累加和即可。
代码如下:
问题:复杂度太高,执行太耗时,不推荐。
解法2:累加求和
在这里可以采用左上角累加求和的方式来进行解答
比如:[[1, 2, 3],
??? [4, 5, 6],
??? [7, 8, 9]]
通过左上角求和即可得到:[ [1, 3, 6],
????????????[5 12, 21],
????????????[12, 27, 45]]
然后通过以下方式进行求和:
举例说明:
这样即可求解。
注明图片来源:https://leetcode.com/problems/matrix-block-sum/discuss/482730/Python-O(-m*n-)-sol.-by-integral-image-technique.-90%2B-with-Explanation
代码如下: