当前位置: 首页 > news >正文

华阴市住房和城乡建设局网站珠海网站建设网络有限公司

华阴市住房和城乡建设局网站,珠海网站建设网络有限公司,游戏加盟平台,织梦做网站首页题目 链接:leetcode链接 思路分析&#xff08;前缀和&#xff09; 注意&#xff1a;我们前面讲过滑动窗口可以处理子数组、子串等问题&#xff0c; 但是在这道题目里面注意数据范围 -1000 < nums[i] < 1000 nums[i]可正可负&#xff0c;区间的和没有单调性&#xff0c;使…

题目

链接:leetcode链接

在这里插入图片描述
在这里插入图片描述

思路分析(前缀和)

注意:我们前面讲过滑动窗口可以处理子数组、子串等问题,
但是在这道题目里面注意数据范围 -1000 <= nums[i] <= 1000
nums[i]可正可负,区间的和没有单调性,使用不了滑动窗口

这里带来新的解决方法
这道题目也是要求我们求一段连续区间的和,我们的前缀和算法也能帮助我们做到 [l , r] = dp[r] - dp[l - 1]

所以,我们求区间和为k,也就是,k = sum[r] - sum[l - 1]

抽象来看,存在一个区间的和为k,那么在==[0 , i - 1]==就存在一个前缀和为sum - k
我们只需要去寻找这个sum - k的前缀和即可。

在这里插入图片描述

思考一下,我们真的需要另外去开一个前缀和数组吗?
如果开前缀和数组的话,那也是需要遍历前缀和数组,以每一个下标为终点当sum去找sum - k,时间复杂度依旧是O(N2),这和暴力有啥区别呢?

所以是不需要开前缀和数组的,
我们只需要sum - k的个数,为什么不使用hash表呢?
我们每次算到一个新的前缀和,去hash表中查找sum - k的个数,不就可以解决了嘛

此时的sum前缀和,采用滚动数组的方式,利用一个变量就可以统计所有的前缀和了(这里后续不会使用,所以前缀和并不用存起来,所以并不需要实质地开一个数组)

细节:
(1)我们什么时候把前缀和插入hash表
我们要在[0 , i - 1]中查找hash表,也就是要先查找,再插入,
否则就是在[0,i]中查找
在[0,i]中查找的话,如果k是0的话,就会出现bug,
比如只有一个元素1,插入hash表后
sum - k还是等于1,但是我们要找的是和为0,
在hash里面找到了1,就返回1,但是实际上是没有符合要求的子数组

(2)如果[0,i]的前缀和恰好等于k怎么办呢?
此时我们需要特殊处理,
这种情况下,sum - k等于0,此时的对应的sum - k区间不存在,这种情况要特殊处理一下,
在创建hash表的时候,额外把hash[0] = 1,来提前应对这种情况

代码

int subarraySum(vector<int>& nums, int k) {int sum = 0;int ret = 0;unordered_map<int,int> hash;hash[0]++;for(auto & e:nums){sum += e;int check = sum - k;if(hash.count(check)) ret += hash[check];hash[sum]++;}return ret;}
http://www.yayakq.cn/news/248396/

相关文章:

  • 设计的网站都有哪些功能微信群发布网站建设
  • 郑州管家网站托管2022年国内重大新闻
  • 3d网站开发成本wordpress搭建电影网
  • 好的建设网站公司简介厦门路桥建设集团有限公司网站
  • 制作网站的图片哪来电子产品设计
  • 福州做网站设计vs2012 网站开发
  • 网站 建设 申请网站建设所需材料
  • 手机购物网站建设网站开发工具 比较
  • 做电影网站需要哪些条件怎么做自己的cpa网站
  • 网站开发会员功能教程无锡做网站seo
  • 降权查询网站企业登记网络服务平台
  • 做翻译的网站移动端低代码开发平台
  • 风云办公ppt模板网站wordpress计算几岁几月几天
  • 英文网站建设怎么收费手机网站被拦截怎么办怎么解决
  • seo网站关键词优化六安在建项目和拟建项目
  • 宁波好的网站推广软件免费的h5制作软件app
  • 公司做网站合同跨境电商平台哪个好
  • 合肥网站优化软件58同城租房
  • 网站前台后台广州高端做网站
  • 青岛信息推广网站wordpress安装教程 linux
  • 深圳宝安高端网站建设公司网站建设 财务归类
  • 网站到首页排名宝塔面板wordpress安装
  • 设计师接私单网站保定网站建设哪家好
  • 南京网站c建设云世家网站建设 佛山
  • 网站换友链平台帮您做网站
  • 广州免费推广网站建设国家反诈中心app下载二维码
  • 琳琅秀网站建设做网页要花多少钱
  • 上海php网站建设网站icon图标怎么加
  • 全国八大员报名官方网站安阳网站建设开发
  • 企业更新网站的好处淘宝联盟网站推广位怎么做