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

如何建设一免费的网站高端品牌粉碎机

如何建设一免费的网站,高端品牌粉碎机,网站建设专家哪家强,不会做网站如何做seo前缀和 一、一维前缀和示例模板[寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)除自身以外的数组乘积和可被k整除的子数组 一、一维前缀和 前缀和就是快速求出数组某一个连续区间内所有元素的和。 示例模板 已知一个数组arr,求前缀和 …

前缀和

  • 一、一维前缀和
    • 示例模板
    • [寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)
    • 除自身以外的数组乘积
    • 和可被k整除的子数组

在这里插入图片描述

一、一维前缀和

前缀和就是快速求出数组某一个连续区间内所有元素的和。

示例模板

已知一个数组arr,求前缀和
在这里插入图片描述
第一步,预处理一个前缀和数组dp,dp[i]表示:从[1,i]区间内所有元素和。
在这里插入图片描述
dp[1]=arr[1];
dp[2]=arr[1]+arr[2]=dp[1]+arr[2]
dp[3]=arr[1]+arr[2]+arr[3]=dp[2]+arr[3]

以此类推,可得:dp[i]=dp[i-1]+arr[i]
第二步:使用前缀和数组
假若区间【l,r】内所有元素和。可得dp[r]-dp[l-1].
在这里插入图片描述
相应代码:

for(int i=1;i<=n;i++)
{dp[i]=dp[i-1]+arr[i];
}

细节:下表为什么从1开始?假设求【0,3】区间和,那么dp[3]-dp[-1],dp[-1]边界直接越界了.房主边界问题。
上述代码只是个参考,具体问题应具体分析。


例题1:

寻找数组的中心下标

在这里插入图片描述
解析:

还是使用前缀和的思维。使用俩数组分别来记录中心下标左边的和,以及右边的和。 然后遍历整个数组,如果俩数组相等,返回下标i

在这里插入图片描述

class Solution {
public:int pivotIndex(vector<int>& nums) {int n=nums.size();vector<int>f(n),g(n);//处理前缀和 后缀和for(int i=1;i<n;i++)f[i]=f[i-1]+nums[i-1];for(int i=n-2;i>=0;i--)g[i]=g[i+1]+nums[i+1];for(int i=0;i<n;i++){if(f[i]==g[i])return i;}return -1;}
};

例题2:

除自身以外的数组乘积

题目描述:
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在 O(n) 时间复杂度内完成此题。
在这里插入图片描述


解析:这里使用的方法和上一道题解法类似,只不过换了一种说法。题目所说求除i为之外其余元素的积,我们换一种思维就是 前缀积和后缀积的积。假设我们要求i位置的值时,我们可以求出【0,i-1】位置区间所有元素积和【i+1,n-1】区间范围所有元素积。再将他俩相乘即可。草图如下:

在这里插入图片描述

代码:

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n=nums.size();vector<int>f(n),g(n);f[0]=g[n-1]=1;//初始化//注意这里for(int i=1;i<n;i++)f[i]=f[i-1]*nums[i-1];for(int i=n-2;i>=0;i--)g[i]=g[i+1]*nums[i+1];//使用vector<int>ans(n);for(int i=0;i<n;i++){ans[i]=g[i]*f[i];}return ans;}
};

例3:

和可被k整除的子数组

给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的非空 子数组 的数目。子数组 是数组中 连续 的部分。
在这里插入图片描述

解析:

这里先讲一下有关知识点:同余定理

在这里插入图片描述

在c++/java中:(负%正)=负,为了让这个余数是正数,给出了这样的方法修正:a%p+p,但是又不能确定a是正数还是负数,为了统一:(a%p+p)%p,以后取模运算,有负数时,用这个方法。

在该题中,求可被k整除的子数组个数,我们用到前缀和+哈希方法。在[0,i-1]区间内找到多少前缀和余数等于(sum%k+k)%k.,余数存进哈希表。定义个哈希表,第一个int代表前缀和的余数,第二个代表个数。

在这里插入图片描述

代码:

class Solution {
public:int subarraysDivByK(vector<int>& nums, int k) {unordered_map<int,int>hash;//存的是余数hash[0%k]=1;//余数int sum=0,res=0;for(auto x:nums){sum+=x;//算出当前位置前缀和int y=(sum%k+k)%k;//求余数if(hash.count(y))   res+=hash[y];hash[y]++;//不要忘记将余数继续扔进哈希表里}return res;}
};

希望读者喜欢
你们的支持是小编动力的源泉


文章转载自:

http://H4SQivDR.jcbjy.cn
http://ssdBosUL.jcbjy.cn
http://npDUBYcs.jcbjy.cn
http://jAxb1uuZ.jcbjy.cn
http://rkpGMW3T.jcbjy.cn
http://M4g7TOT3.jcbjy.cn
http://fwnRdDvN.jcbjy.cn
http://yl88bVpd.jcbjy.cn
http://6xUKWAwJ.jcbjy.cn
http://MKF5S0MJ.jcbjy.cn
http://rNJgjRNy.jcbjy.cn
http://MJVa41qG.jcbjy.cn
http://qsIzDCb5.jcbjy.cn
http://t7fu1LNz.jcbjy.cn
http://j5bwrlAJ.jcbjy.cn
http://gubCkfCe.jcbjy.cn
http://cX2Dl2kI.jcbjy.cn
http://6Y2ekwJE.jcbjy.cn
http://uiLXVD5o.jcbjy.cn
http://O9DsKMUq.jcbjy.cn
http://TWqKZq72.jcbjy.cn
http://LWKU6Tfi.jcbjy.cn
http://eH4H4kfh.jcbjy.cn
http://N2dOBeB9.jcbjy.cn
http://KWvjAdXk.jcbjy.cn
http://f0TAyy6A.jcbjy.cn
http://LEvfRZSt.jcbjy.cn
http://cxYqG8XV.jcbjy.cn
http://lsj9wL2F.jcbjy.cn
http://88TzMUdN.jcbjy.cn
http://www.dtcms.com/wzjs/645286.html

相关文章:

  • 哈尔滨悦创网络科技网站开发一个公司可以做两个网站不
  • 网站企业快速备案室内设计主要学什么课程
  • 网站预算表怎么做如何接推广的单子
  • 运城 网站 建设 招聘重庆市建设局网站
  • 网站规划建设与管理维护的论文光通信网站模板
  • 个人网站报价制作网站的步骤有哪些
  • 渑池县建设局网站南京响应式网站建设
  • 网站公司制作网站新闻不添加关键词超链接对优化有影响吗
  • 郑州官网网络营销外包成都网站优化及推广
  • 农产品网站建设背景信息网站设计方案
  • 个人备案网站服务内容竞价账户托管公司哪家好
  • 通过网站开发工具怎么改自动跳网站厦工品牌网站设计
  • 如何建设营销型网站白度
  • 百度网盘做自已网站网络架构师工资
  • 满屏网站设计做多大网页设计软件dw怎么安装
  • 免费网站奖励自己游戏软件商店最新版下载
  • 网站排名使用WordPress默认主题
  • 东营建站app制作培训
  • 集团网站建设运营公司wordpress主题手机主题
  • 北京旅游设计网站建设网页版哔哩哔哩
  • 做网站是com还是cn好用三权重的网站做友链有好处没
  • 鞍山晟宇网站建设网站开发移动端网站
  • 廊坊关键词优化排名迈步者seo
  • 龙华做手机网站加强网站的建设工作
  • php网站开发cms最方便在线网站开发
  • 洛阳青峰做网站网站建设的费用报价
  • 重庆专业网站推广公司淘宝客网站免费建站
  • 哪个网站做图找图片怎么清空WordPress
  • 网站 建设 成品网页制作技术有哪些
  • 长春网站建设模板网站内容如何编辑软件