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

一个app下载网站北京建设教育协会网站首页

一个app下载网站,北京建设教育协会网站首页,保定网站制作设计哪个公司好,西安网站建设那家强做环形数组最大和之前先做一下数组最大和 53.数组最大和 题目链接#xff1a;LeetCode53.数组最大和 本体使用动态规划或者贪心 动态规划 class Solution { public:int maxSubArray(vectorint nums) {vectorintdp(nums.size(),0);dp[0]nums[0];int an… 做环形数组最大和之前先做一下数组最大和 53.数组最大和 题目链接LeetCode53.数组最大和 本体使用动态规划或者贪心 动态规划 class Solution { public:int maxSubArray(vectorint nums) {vectorintdp(nums.size(),0);dp[0]nums[0];int ansnums[0];for(int i1;inums.size();i) {int num dp[i-1]nums[i];if(numnums[i]) dp[i]num;else dp[i]nums[i];ans ansdp[i]?ans:dp[i];}return ans;} };贪心 class Solution { public:int maxSubArray(vectorint nums) {int sumnums[0];int ans nums[0];for(int i1;inums.size();i){sumnums[i];if(sumnums[i]) sumnums[i];ans anssum?ans:sum;}return ans;} };918.环形数组的最大和 题目链接LeetCode918环形数组的最大和 动态规划 求解普通数组的最大子数组和是求解环形数组的最大子数组和问题的子集。设数组长度为n下标从0开始在环形数组中答案可能包括以下两种情况 构成最大子数组和的子数组为nums[i:j]包括nums[i]到nums[j-1]共j-i个元素其中0ijn构成最大子数组和的子数组为nums[0:i]和nums[j:n]其中0ijn 第二种情况中答案可以分为两部分nums[0:i]为数组的某一前缀,nums[j:n]为数组的某一后缀。求解时可以枚举j,固定sum(nums[j:n])的值然后找到右端点坐标范围在[0,j-1]的最大前缀和将它们相加更新答案。 class Solution { public:int maxSubarraySumCircular(vectorint nums) {int n nums.size();vectorintleftmax(n,0);//记录数组的前缀最大子数组和下标从0开始leftmax[0]nums[0];int sumnums[0];//用来记录普通数组的子数组的和int resnums[0];//普通数组的最大子数组和int leftsumnums[0];for(int i1;in;i){sumnums[i];if(sumnums[i]) sumnums[i];res ressum?res:sum;leftsumnums[i];leftmax[i]leftmax[i-1]leftsum?leftmax[i-1]:leftsum;}if(res0) return res;//数组中的元素都是负数//固定后缀int rightsum0;for(int in-1;i0;--i){rightsumnums[i];res max(res,leftmax[i-1]rightsum);}return res;} };取反 对于第二种情况可以找到普通数组最小的子数组nums[i-j]。令maxRes是普通数组的最大子数组和minRes是普通数组的最小子数组和可以将maxRes与sum(nums[0-n])-minRes取最大值作为答案。 class Solution { public:int maxSubarraySumCircular(vectorint nums) {int sumnums[0];//求解数组的和int summaxnums[0],maxresnums[0];//最大子数组和int summinnums[0],minresnums[0];//最小子数组和for(int i1;inums.size();i){summax max(summaxnums[i],nums[i]);maxres max(maxres,summax);summin min(summinnums[i],nums[i]);minres min(minres,summin);sumnums[i];}//coutmaxres minres sum;if(maxres0) return maxres;return max(maxres,sum-minres);} };单调队列 可以将数组延长一倍即对于in的元素令nums[i]nums[i-n] 对于第二种情况nums[0:i]和nums[j:n]可以组成连续的一段因此问题转换为一个在长度为2n的数组上寻找长度不超过n的最大子数组和(每个位置的元素只能使用一遍)。令si为前i项的前缀和找到最大的si-sj其中i-nji用单调队列维护该集合 遍历到i时单调队列头部元素下标小于i-n则出队。该过程一直进行直至队列为空或者队头下标大于等于i-n取队头元素作为j计算si-sj更新答案若队列尾部元素k满足sksi则出队该过程一直进行直至队列为空或者条件不满足因为kik更容易被步骤1剔除并且作为被减项sk比si更大更不具有优势。 class Solution { public:typedef pairint,int pa;//位置到前缀和的映射int maxSubarraySumCircular(vectorint nums) {int sumnums[0],resnums[0];int n nums.size();dequepa qu;qu.push_back(pa(0,sum));for(int i1;i2*n;i){sumnums[i%n];while(!qu.empty()qu.front().firsti-n) {qu.pop_front();}res max(res,sum-qu.front().second);while(!qu.empty()qu.back().secondsum){qu.pop_back();}qu.push_back(pa(i,sum));}return res;} };
http://www.pierceye.com/news/636109/

相关文章:

  • 有帮忙做幻灯片的网站么济宁网站开发公司
  • 网站开发技术 主流官网铺设
  • 贵阳网站建设钟鼎网络江门网站建设套餐
  • 263企业邮箱自动回复seo技巧与技术
  • 昆明响应式网站怎么做最火的视频网站
  • 中山微信网站西安网站建设麦欧科技
  • 西平县住房城乡建设局网站网站备案 教程
  • 怎么用ps做简单网站推广码怎么输入
  • 跨越速运网站谁做的桂林网站建设培训
  • 荥阳网站建设多少钱做网站 提要求
  • 大学生个体创业的网站建设网页素材及网站架构制作
  • 网站开发前端框架和后端框架做长海报的网站
  • 柳州网站制作建一个网站怎么赚钱
  • 建网站支持设备是什么意思wordpress 默认密码
  • 找人做效果图那个网站网站开发语言 asp
  • 山东省山东省建设厅网站首页百度助手免费下载
  • 北京网站建设认百度非企推广开户
  • 厦门模板建站系统网站icp备案信息注册
  • 网站建设维护人员多语言网站开发
  • 网站开发 论文大连微信公众号开发公司
  • 珠海网站建设王道下拉惠烟台网站制作专业
  • 用php做网站要用构架吗ios开发者模式
  • 如何实现一个制作好的网站wordpress cdn
  • 成都网站商城建设深圳制作网站制作公司哪家好
  • 谁可以做网站开发公司空置房拨款合同
  • seo网站管理网站建设信(信科网络)
  • 做网站需要哪些东西网站设计报价单模板
  • 合肥家居网站建设怎么样网站建设与维护中
  • 淘宝app网站建设做网页设计可以参考哪些网站
  • 合作建设网站协议江门seo计费管理