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

深圳网站制作公司深圳app开发装修设计软件3d

深圳网站制作公司深圳app开发,装修设计软件3d,xiaohua wordpress主题,做国外有那些网站Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 和为K的子数组 题目:示例:题解:解法一:解法二: 题目: 示例: 题解: 解法一: 暴力解法:我们很容易想到通过两个for循环去遍…

在这里插入图片描述
Halo,这里是Ppeua。平时主要更新C++,数据结构算法,Linux与ROS…感兴趣就关注我bua!

和为K的子数组

  • 题目:
  • 示例:
  • 题解:
    • 解法一:
    • 解法二:

在这里插入图片描述

题目:

在这里插入图片描述

示例:

在这里插入图片描述

题解:

解法一:

暴力解法:我们很容易想到通过两个for循环去遍历数组中所有和的可能,之后来判断有几个满足K.他的代码十分的简单,所以这里直接给出.

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

这里通过一个start与end来控制子数组区间.若为K则计数++.

我们仔细观察这样的做法.可以很容易的发现,**我们可以通过前缀和来解决两层循环的问题.**于是就有了解法二:利用前缀和来解决此类问题.

解法二:

不熟悉前缀和的uu们可以看看这篇文章:[前缀和]((138条消息) 【高精度加减乘除法、一维二维前缀和&&差分】思路讲解及代码实现_ppeua的博客-CSDN博客)

这里就直接开始推导了,这里利用的是一维的前缀和方法.

定义:**pre[i]**表示从0~i的所有数组元素之和.

那么根据前缀和的定义:j~i区间内的元素之和可以表示为:pre[i]-pre[j-1],我们要判断的就是这个结果能不能等于K.

所以现在的求解就简化为下面这个式子:
在这里插入图片描述

我们对两边式子进行简单的数学推导可以得到.

在这里插入图片描述

这样我们可以通过一个hash来存储值,之后只要验证当前遍历的这个前缀和-k的结果是否出现在hash当中.若出现则+上其出现的次数.

代码较为简单:

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

有两个很重点的问题:

  1. 为什么mp[0]=1?

    为了应对 nums[0] +nums[1] + … + nums[i] == k,也就是从下标 0 累加到下标 i刚好满足的情况.

    举个例子:k为6

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d76gHMzW-1690721194136)(9feab2bfaa7a4eeaaf2882827c8466d.jpg)]

​ 当这种情况下,第一次遍历到原数组为3,前缀和数组为6的位置的时候.此时pre-k=0,是刚好满足情况的.所以需要先预设一个mp[0]=1的情况.

  1. 为什么是res+=mp[nums[i]-k]:

    举个例子:K仍为6

在这里插入图片描述

​ 这道题的答案是4,当遍历到第一个6的位置上时,得到第一个答案.遍历到第二个位置时,得到第二个答案.这两种情况都是:pre-k=0

遍历到12时得到第三个答案,此时pre-k=6.那么此时只有三个答案嘛?不是的,12-第一个6是一个答案.12-第二个6也是一个答案.

遍历到第二个位置时,得到第二个答案.这两种情况都是:pre-k=0

遍历到12时得到第三个答案,此时pre-k=6.那么此时只有三个答案嘛?不是的,12-第一个6是一个答案.12-第二个6也是一个答案.

所以:res+=mp[nums[i]-k],是为了直接加上相同情况的可能.

http://www.yayakq.cn/news/760042/

相关文章:

  • 怎么建设自己产品网站wordpress推介
  • 网站开发需要用到的技术html动态页面
  • 班级优化大师下载安装福州网站seo推广优化
  • 经典的企业网站做网站月收入多少
  • 网站后台费用移动端显卡
  • 海淀营销型网站建设西安关键词排名优化
  • 网站优化需要工具新乡搜狗网站推广工具
  • 医药网站建设中图片野花香社区论坛
  • 国外一些建筑公司网站上海百度搜索优化
  • 高端建站费用建筑设计图纸
  • 网站制作app深圳网站建设定制开发服务
  • 响应式网站报价微信公众平台官方网站
  • 唐山营销型网站制作好网站建设公司服务
  • 福州哪家专业网站设计制作最好源码之家
  • 织梦网站地图插件中山市做网站的公司
  • 网站上的付费文章怎么做昆明做一个公司网站多少费用
  • 自己的电脑做网站空间视屏视频网站弹幕怎么做
  • 8个页面的网站怎么做手机网站轮播图
  • 东莞做企业宣传网站自己做网站微商
  • 可以看的网站的浏览器有哪些网站制作公司咨询网站制作公司
  • 园区 网站建设方案济南 制作网站 公司吗
  • 有招聘网站策划的吗wordpress在本地打开
  • 用dw做网站怎么换行怎么做装球的网站
  • 官方网站模版西直门网站建设公司
  • 网站建设工作情况汇报免费域名申请流程
  • 品牌百度网站建设浙江省甲级设计院加盟
  • 企业网站模板湖南岚鸿模板php与网站开发
  • 网站推广seo代理企业营销管理系统
  • 浪琴女士手表网站深圳网站建设加盟
  • 巨野做网站的建设网站公司浩森宇特