当前位置: 首页 > 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/440793.html

相关文章:

  • phpwind网站阿贝云服务器
  • 网站建设专业平台赣州信息港主页
  • 网站编程语言有哪些番禺网站制作价格
  • 新的网站建设技术方案免费制作二级网站
  • 南昌市住房和城乡建设网站网站建设与管理规划书
  • 江西省建设工程协会网站查询wordpress搭建的博客系统
  • 自学网站开发难吗有实力营销型网站建设
  • 水利网站建设wordpress博客模版
  • 电商平台网站大全directadmin网站储存目录
  • 网站建设设计规范方案上海做网站费用
  • 专做机械类毕业设计的网站百度指数入口
  • 广州网站建设赣州那里有做网站的公司
  • go生物网站做蛋白定位教育 wordpress模板
  • 如何进行一个网站建设手机图标 wordpress
  • jsp电影网站开发教程北京专业建设
  • 织梦网站怎么关闭手机模板酒店网站开发方案
  • 网站建设上传文件网上怎么自己注销营业执照
  • 用绿色做图标的网站高效网站建设公司
  • 企业网站的建设目的包含什么百度最怕哪个投诉电话
  • 南充网站制作自己做外贸购物网站
  • 全景网站开发营销网络推广
  • 做网站广告怎么做asp网站首页模板
  • 网站 建设意见网页版淘宝网登录入口
  • 广西专业建网站西班牙网站后缀
  • 网站登录系统网络游戏开发平台
  • 行业网站名称wordpress下载页制作
  • express做静态网站昆明网站营销
  • 网站服务器租用价格怎么算直播软件有哪些
  • 上海网站建设服务公司时尚工作室网站源码
  • 免费二维码在线制作网站编辑 seo是什么 百度知道