leetcode前缀和
文章平均质量分 56
岗岗ganggang
这个作者很懒,什么都没留下…
展开
-
剑指 Offer II 011. 0 和 1 个数相同的子数组python
题目描述:题解:1.将nums中的1保持不变,将0变为-1,子数组中0 1个数相等即子数组和为0.2.用数组pre_sum保存nums的前缀和,dict_sum键为某个前缀和,值为该前缀和对应的序号i,即nums[0]到nums[i]的和对应的值为i。3.计算前缀和,保存在pre_sum[-1]中,如果dict_sum中存在pre_sum[-1]的键,则说明i-dict_sum[pre_sum[-1]]段的子数组和为0,如果pre_sum[-1]不在dict_sum中,则将其加入,对应的原创 2022-01-03 20:19:16 · 450 阅读 · 0 评论 -
剑指 Offer II 010. 和为 k 的子数组python
题目描述:题解:前缀和由于题目说明中输入nums数组中可能存在负数,因此滑动窗口的方法不适用。1.创建一个pre_sum数组,pre_sum[0]=0,记录nums数组的前缀和。2.创建一个dict sum_dict,记录前缀和为某个值的子数组数量,初始化返回值ret=0。3.每次计算出一个前缀和pre_sums[-1],将其值减k,如果pre_sums[-1]-k在sum_dict存在,则返回值ret加上sum_dict对应的value值。4.如果pre_sum[-1]在sum原创 2022-01-03 10:44:55 · 317 阅读 · 0 评论 -
leetcode 304. 二维区域和检索 - 矩阵不可变python
题目描述:题解:矩阵前缀和1.求坐标(0,0)到(i,j)的matrix对应位置之和。图中红色部分=两个绿色部分相加-蓝色部分+[i,j]用thesum[i][j]表示坐标[i,j]到[0,0]的和,thessum[i][j] = thesum[i-1][j]+thesum[i][j-1]-thesum[i-1][j-1]+,matrix[i][j]2.求坐标[i,j]到[m,n]值之和。[m][n]到[i][j]矩阵值之和=红色部分-两个绿色部分+蓝色部...原创 2021-12-16 11:22:19 · 303 阅读 · 0 评论 -
leetcode 209. 长度最小的子数组 python
题目描述:题解:题解一(超时):1.numsum保存nums数组的前缀和,即numsum[i]=nums[0]+nums[1]+...+nums[i]2.nums[i]+num[i+1]+...+nums[j]可以转化为numsum[j]-numsum[i]3.对numsum进行遍历,找到满足numsum[j]-numsum[i]>=target的最小的j-i。class Solution(object): def minSubArrayLen(self, ...原创 2021-09-15 16:52:02 · 450 阅读 · 0 评论 -
leetcode 303. 区域和检索 - 数组不可变 python
题目描述:题解:思路:前缀和1.在init操作中,创建一个numsum数组,numsum[i]=nums[0]+nums[1]+...+nums[i]2.在sumRange操作中:<1>如果left=0,则nums[left]+nums[left+1]+...+nums[right]对应right处的前缀和,直接返回numsum[right]即可。<2>如果left=right,则直接返回nums[left]即可,通过numsum[right]-numsu原创 2021-09-15 11:04:09 · 67 阅读 · 0 评论