【Leetcode Daily】1314矩阵区域和
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:370|阅读时长:1分钟|浏览量:
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个二维数组和一个数字 k,现在对于二维数组上的每个值,请求其为中心向周围延伸 k 个格子的正方形的区域和。
思路分享
- 本质上就是变形了的二维前缀和,只不过这次边界的需要自己计算和规范化,比如下面参考题解中写的 max,min 就是如此,对于超过了数组的值,尽量大或者尽量小就行。重点还是在于自己分辨清楚,边界的下标是否需要加一,由于初始化的矩阵左上多垫了一行和一列,所以计算右下坐标时也需要加一,而左上角本来需要减一,现在就不用变了。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution: |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-11-14
【Leetcode Daily】1094拼车
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个二维数组,其中的元素为长度 3 的一维数组,三个值分别是上车的人数,上车的下标,下车的下标,求整个过程中,车上的人数是否都小于 capacity。 思路分享 此前对于一段值的差值用前缀和处理,而前缀和的反面则是差分,求两个值的差值。所以差分记录的是值的变化,一个特点是,对于 a-b 区间的值加 10,相当于在差分数组上的 a 处加 10,b 处减 10. https://leetcode.cn/problems/car-pooling/solutions/2550264/suan-fa-xiao-ke-tang-chai-fen-shu-zu-fu-9d4ra/ 所以本题只要先求出整个数组的差分,再对差分做前缀和,过程中判断是否有值超过阈值即可。 代码解答(强烈建议自行解答后再看) 参考题解 12345678class Solution: def carPooling(self, trips: List[List[int]], capacity: int) -> bool: ...

2025-12-06
【Leetcode Daily】1109航班预订统计
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个航班预定表,内容分别是起始航班下标,终止航班下标,预订座位数组成的多个数据,求最终每个航班预定的座位数。 思路分享 越是做差分的题,越是发现,差分十分擅长处理增减的累计。拿此题来讲,只要通过差分记录各个航班的累计座位数,然后求前缀和即可。 https://leetcode.cn/problems/corporate-flight-bookings/solutions/968214/hang-ban-yu-ding-tong-ji-by-leetcode-sol-5pv8/ 代码解答(强烈建议自行解答后再看) 参考题解 1234567class Solution: def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]: rec = [0]*(n+2) for start, last, seats in bookings: rec[start] +=...

2025-07-09
【Leetcode Daily】1524和为奇数的子数组数目
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个整数数组,要求这个数组中所有子数组中和为奇数的数目。 思路分享 前缀和的思路,可以参考 【Leetcode Daily】303区域和检索-数组不可变 虽然是陆爻齐自己思考了出来,但如果没有提前知道是前缀和区域,应该是做不出来的。 回忆解题的过程,就是思考如何快速判定奇数区域时,对做了前缀和了数组观察偶然发现,只要记录此前的奇数和偶数的数目,就能方便地计算现有的数字与此前数字之前区域的和为奇数的数目。 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112131415class Solution: def numOfSubarrays(self, arr: List[int]) -> int: s = list(accumulate(arr, initial=0)) even_num = 0 odd_num = 0 ans = 0 for i in s: if i%2 == 0: ...

2025-11-30
【Leetcode Daily】1590使数组和能被P整除
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组和数字 p,现在可以移除数组内的最短长度的子数组,使得数组和能被 p 整除。 思路分享 本质上就是找到子数组和能与总数组和同余时,长度最小的情况。对于找子数组的前缀和区间两侧:(right - left)%p = num, (right-num)%p = left%p。 那么遍历前缀和,通过哈希表就能方便得记录前面子数组的余数情况,如果有匹配的左侧子数组,就记录当前长度。 https://leetcode.cn/problems/make-sum-divisible-by-p/solutions/2158435/tao-lu-qian-zhui-he-ha-xi-biao-pythonjav-rzl0/?envType=daily-question&envId=2025-11-30 代码解答(强烈建议自行解答后再看) 参考题解 1234567891011121314class Solution: def minSubarray(self, nums:...

2025-04-14
【Leetcode Daily】1534统计好三元组
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组,要求统计其中所有满足要求三元组的数量。该要求是,两两之差,满足题目的三个数字。 思路分享 首先就是暴力解法,O(n^3),不过陆爻齐在普通的暴力上做了一点点剪枝,但终究还是暴力。 想要比较好的完成本题,就需要学习前缀和,总体的思路是固定三元组中的两个,通过要求来求得剩下一个值的范围,将该范围在前缀和中搜寻,符合则找到合适的三元组。 https://leetcode.cn/problems/count-good-triplets/?envType=daily-question&envId=2025-04-14 代码解答(强烈建议自行解答后再看) 陆爻齐小改良的暴力解法 12345678910111213141516171819class Solution {public: int countGoodTriplets(vector<int>& arr, int a, int b, int c) { int size =...

2025-07-18
【Leetcode Daily】1685有序数组中差绝对值之和
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组,要求返回其中每一个值与其它所有元素差值的绝对值。 思路分享 前缀和的思路,可以参考 【Leetcode Daily】303区域和检索-数组不可变 从本题,可以学习到运用前缀和,简化一个数字与其左右两边数值之差值求解过程的方法。 https://leetcode.cn/problems/sum-of-absolute-differences-in-a-sorted-array/solutions/3603710/ling-shen-ke-hou-qian-zhui-he-by-zhi-ma-2zjb3/ 比如说,先以 0...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章
