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

网站建设设计广州网站模板及源码

网站建设设计广州,网站模板及源码,做网站是用什么软件做的,网页制作网站教程题目 思路 前缀和哈希表 这里引入了一个前缀和的概念。什么是前缀和呢?对于数组中的任意位置i,前缀和sum[i]为从第一个元素到第i个元素的元素和。这说明你要是想求第i1到第j的子数组和,可以用sum[j]-sum[i]来计算。 我们可以用哈希表来存储…

题目

思路

前缀和+哈希表

这里引入了一个前缀和的概念。什么是前缀和呢?对于数组中的任意位置i,前缀和sum[i]为从第一个元素到第i个元素的元素和。这说明你要是想求第i+1到第j的子数组和,可以用sum[j]-sum[i]来计算。

我们可以用哈希表来存储每个位置的前缀和以及它出现的次数。

关键点说明

sum-k的意义:如果在hashmap中找到了sum-k,则说明在之前某个点的累计和为sum-k,而当前点的累积和是sum,则说明之前的点到当前点的子数组之和恰好为k =sum-(sum-k)。

如何去利用这个条件呢?

如果sum-k在哈希表中,则sum-k出现的次数为从不同起点到当前节点子数组和为k的不同情况。每个sum-k都对应一个起点,使得从那个起点到当前节点的和为k。

因此,每当我们找到一个 sum - k 存在于哈希表中时,我们就把它的计数(即之前这种情况发生的次数)加到 count 上,这表示我们又找到了相应数量的以当前元素结束的子数组,其和为 k。

为什么要定义hashmap[0]=1,如果sum-k等于0,说明存在子数组的和等于k,直接给次数+1即可。

代码

class Solution {
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int,int> hashmap;int sum=0,count=0;hashmap[0] = 1;for(int i=0;i<nums.size();i++){sum += nums[i];if(hashmap.find(sum-k) != hashmap.end()){count += hashmap[sum-k];}hashmap[sum]++;}return count;}
};

http://www.dtcms.com/a/563988.html

相关文章:

  • ac86u做网站服务器wordpress前端用户中心投稿
  • 免费下载素材的设计网站网站定位 怎么做
  • 学网站开发去哪学投资加盟
  • 上海中小网站建设建设企业网站企业
  • 邯郸网站设计培训班wordpress怎么进行页面修改
  • 安全的网站建设公站内优化
  • 做网站干什么用网站备案多少岁可以做
  • 恒基建设集团网站地址十堰建网站
  • 做网站的需求调研手工制作会动的玩具
  • 企业网站建设itcask企业网络架构图
  • 中国建设银行网站对公账户首页wordpress淘宝客程序
  • 密云做网站怎么做的网站怎么放上网
  • 自驾游网站模板互动性的网站
  • 深圳html5网站开发一个完整的营销策划案范文
  • 网页制作与网站建设 自考网站页面模板页面布局
  • 池州网站制作管理咨询的工作形式与特点包括了
  • wordpress本地淄博网站优化公司
  • 做英语在线翻译兼职网站网站空间一定要买吗
  • 杭州企业做网站门户网站什么意思举例子
  • 网站seo报表深圳市最新出行政策
  • 浙江网站建设cms宁波网站建设优化服务公司
  • 网站安装代码网页设计图片大小单位
  • 有什么免费做代理的网站dante wordpress主题
  • 各类企业网站案例wordpress 编辑器全屏
  • 爱用建站正规吗网站访问找不到域名怎么回事
  • 建站平台功能结构图那种软件
  • 如何自己做网站一年赚一亿wordpress跳转到老域名
  • 怎样做视频上网站赚钱汽车用品网站源码
  • 深圳住房和城乡建设局网站如何注册api key域名
  • 网站建设前端工程师岗位职责网址创作