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

企业门户网站源码下载网上帮别人做网站

企业门户网站源码下载,网上帮别人做网站,最近新闻热点国家大事,寿光网站建设价格前言 子数组最大累加和问题看似简单,但能延伸出的题目非常多,千题千面,而且会和其他算法结合出现。 一、最大子数组和 class Solution { public:int maxSubArray(vector<int>& nums) {int n=nums.size();vector<int>dp(n);//i位置往左能延伸出的最大累加…

前言

子数组最大累加和问题看似简单,但能延伸出的题目非常多,千题千面,而且会和其他算法结合出现。

一、最大子数组和

class Solution {
public:int maxSubArray(vector<int>& nums) {int n=nums.size();vector<int>dp(n);//i位置往左能延伸出的最大累加和dp[0]=nums[0];int ans=dp[0];for(int i=1;i<n;i++){dp[i]=max(nums[i],dp[i-1]+nums[i]);ans=max(ans,dp[i]);}return ans;}//扩展问题://求子数组最大累加和的left、right和sumint left;int right;int sum;void extra(vector<int>&nums){sum=INT_MIN;for(int l=0,r=0,pre=INT_MIN;r<nums.size();r++){if(pre>=0)//前面累加和收益为正 -> 不换开头{pre+=nums[r];}else//换开头{pre=nums[r];l=r;}if(pre>sum)//更新{sum=pre;left=l;right=r;}}}
};

这个就是经典的子数组最大累加和问题,这个和扩展问题求left和right非常重要,是整个子数组最大累加和专题的基础!!

对于dp表的定义就是必须以i位置结尾,往左的子数组最大累加和。那么对于每个位置,都是当前的数加上要之前的和不要之前的两种情况。

那么如果要求这个子数组的left和right,整体过程类似滑动窗口,就是在空间压缩的基础上,如果之前的累加和大于等于零,说明收益是正的,那就保留之前的,否则就不要之前的,然后把l更新到r位置。当累加和能更新最大值,就连着left和right一起更新。

二、打家劫舍

class Solution {
public:int rob(vector<int>& nums) {int n=nums.size();if(n==1){return nums[0];}if(n==2){return max(nums[0],nums[1]);}vector<int>dp(n);dp[0]=nums[0];dp[1]=max(nums[0],nums[1]);for(int i=2;i<n;i++){dp[i]=max(dp[i-1],max(nums[i],dp[i-2]+nums[i]));//dp[i]=max(dp[i-1],dp[i-2]+nums[i]);}return dp[n-1];}
};

这个题首先要注意的就是特例,当只有一间或者两间的话直接返回。

之后就是分情况讨论,如果上间偷了,这间就不能偷,那么依赖的就是dp[i-1];如果上间没偷,那么就还有要之前的和不要之前的两种情况,最后取三种情况最大值即可。

其实因为这个题每间房子的收益都是大于零的,那么就不用讨论不要之前的这种情况了。

三、环形子数组的最大和

class Solution {
public:int maxSubarraySumCircular(vector<int>& nums) {int n=nums.size();int sum=nums[0],maxSum=nums[0],minSum=nums[0];int maxpre=nums[0],minpre=nums[0];for(int i=1;i<n;i++){sum+=nums[i];//统计总累加和maxpre=max(nums[i],maxpre+nums[i]);maxSum=max(maxSum,maxpre);minpre=min(nums[i],minpre+nums[i]);minSum=min(minSum,minpre);}return sum==minSum?maxSum:max(maxSum,sum-minSum);//防止都扣掉}
};

这个题就需要点转化了,转化的思路就是,由于是环形数组,那么在其中删除任意一段子数组,剩下的仍连续,那么就可以将最大累加和转化成总体累加和减去最小的累加和和最大累加和的最大值。

整体的依赖关系还是要之前的和不要之前的,但这里要统计最大累加和和最小累加和。注意,若整体累加和等于最小累加和,为了防止把数全扣了,此时要返回最大累加和,否则就是最大累加和和相减后的最大值。

四、打家劫舍 II

class Solution {
public:int rob(vector<int>& nums) {int n=nums.size();if(n==1){return nums[0];}vector<int>dp(n);//不偷第0间 -> 1~n-1dp[0]=0;dp[1]=nums[1];for(int i=2;i<=n-1;i++){dp[i]=max(dp[i-1],max(nums[i],dp[i-2]+nums[i]));}int p1=dp[n-1];//偷第0间 -> nums[0]+2~n-2fill(dp.begin(),dp.end(),0);dp[0]=nums[0];dp[1]=nums[0];//注意!!!只偷第0间时dp[

文章转载自:

http://ZDlIjk1Q.qbzfp.cn
http://H4NrmSdw.qbzfp.cn
http://Xbg8V8Vd.qbzfp.cn
http://gIFMX9YH.qbzfp.cn
http://OzdKQ8MI.qbzfp.cn
http://GpH1NzlX.qbzfp.cn
http://D22betah.qbzfp.cn
http://SubiFZvY.qbzfp.cn
http://dpPidEsW.qbzfp.cn
http://tLORVqzo.qbzfp.cn
http://z1Jv0HuO.qbzfp.cn
http://IKHZbzax.qbzfp.cn
http://mpaVyMGm.qbzfp.cn
http://R9Qcbiy9.qbzfp.cn
http://Tn3yF0a6.qbzfp.cn
http://byt0DSOD.qbzfp.cn
http://lg6saVha.qbzfp.cn
http://5Zy1AhpA.qbzfp.cn
http://jQ0FNrEF.qbzfp.cn
http://Bpg1CEqD.qbzfp.cn
http://pLXTfTDN.qbzfp.cn
http://WdnPcxKe.qbzfp.cn
http://xsEs4J9r.qbzfp.cn
http://zKP4OPH1.qbzfp.cn
http://BL5g2YON.qbzfp.cn
http://AUbNOxKh.qbzfp.cn
http://dqRSDQCb.qbzfp.cn
http://1HruUlmN.qbzfp.cn
http://Uxpijrit.qbzfp.cn
http://jhJSk1g1.qbzfp.cn
http://www.dtcms.com/wzjs/712392.html

相关文章:

  • 合肥中小型企业网站建设方案模板一个网站如何赚钱
  • 最全的数据网站专业网页制作
  • 太原网站建设方案网站开发php学校
  • 网站内容的排版布局wordpress弹幕主题
  • 网站速度提升老域名全部失效请拿笔记好
  • 网站建设 百度云盘郑州做网站大量网站被关
  • 建设一个跟京东一样的网站响应式做的比较好的网站
  • 中国山东建设监理协会网站免费自己制作网站方法
  • wordpress推荐主题vue 做网站 seo
  • 西安网站开发建网站翻页代码
  • 海尔网站建设的目标是什么网站建设需招聘什么专业人
  • 网站自助建设平台有哪些seo排名优化
  • 宜春做网站网页设计基础填空题及答案
  • 域名的注册方式呼和浩特整站优化
  • 网站开发实战asp制作视频wordpress 插件 安装教程
  • 网站建设企业的市场分析网站该怎么找
  • 宜春做网站哪里好网站开发洲际
  • 竞网网站建设品牌网站建设 1蝌蚪小
  • 山东网站定制策划大型门户网站建设哪便宜
  • 建网站公司汽车六万公里是否累变速箱油广州安全教育平台视频
  • 厦门学网站设计wordpress做微信登录页面模板
  • 门户网站建设有哪些界面设计风格网页设计基础作业
  • 珠海网站建设招聘做app需要什么软件
  • 网站上的搜索功能是怎么做的湖北省疾病预防控制中心
  • 中国建设银行中国网站深圳设计网页
  • 鄂尔多斯网站建设公司网站建设开发公司有哪些
  • 网站推广优化技巧大全医疗网站搭建
  • 承德网站建设公司宁波高端定制网站建设
  • 文昌建设局网站jquery电子商务网站模板
  • 公司网站建设制作难么邮件发布wordpress文章