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

网站设计培训课程谷歌网站收录提交入口

网站设计培训课程,谷歌网站收录提交入口,做博彩网站的虚拟空间,天津建设工程信息网上网流程题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 解题思路: 方法一:看到子数组和,首…

题目:
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

解题思路:
方法一:看到子数组和,首先可以想到子数组和=前缀和之差,要找到最大子数组和,我们可以枚举nums中的元素x,找出以元素x结尾的最大子数组和,然后更新答案。

要寻找以元素x结尾的最大子数组和,我们只需要知道x元素之前的最小子数组和。所以需要一个变量minPreSum记录x元素之前的最小子数组和,那么以元素x结尾的最大子数组和=preSum - minPreSum。

class Solution {public int maxSubArray(int[] nums) {int preSum = 0;int minPreSum = 0;int ans = nums[0];for(int num : nums){preSum += num;ans = Math.max(ans, preSum - minPreSum);minPreSum = Math.min(minPreSum, preSum);}return ans;}
}

方法二:动态规划。要知道以x结尾的最大子数组和,我们可以通过以x-1结尾的最大子数组和推导出来。状态转移方程为dp[i] = max(dp[i-1] + nums[i], nums[i]),dp[i]表示以i结尾的最大子数组和,在枚举i的过程中更新答案。

class Solution {public int maxSubArray(int[] nums) {int n = nums.length;int[] dp = new int[n];dp[0] = nums[0];int ans = dp[0];for(int i = 1; i < n; i++){dp[i] = Math.max(dp[i-1] + nums[i], nums[i]);ans = Math.max(dp[i], ans);}return ans;}
}

优化:
因为在计算dp[i]的过程中只会用到dp[i-1],所以我们可以用一个变量来代替。

class Solution {public int maxSubArray(int[] nums) {int ans = nums[0];int x = 0;for(int num : nums){x = Math.max(x + num, num);ans = Math.max(x, ans);}return ans;}
}
http://www.dtcms.com/wzjs/290289.html

相关文章:

  • 专业邯郸网站建设摘抄一篇新闻
  • 玉环做网站营销型网站制作建设
  • 邪恶做动态网站seo网站关键词优化怎么做
  • 珠海做网站专业公司搭建网站步骤
  • 公司做网站广告语关键词排名手机优化软件
  • 云服务器 能用来做网站吗汕头seo建站
  • 上海关键词排名优化公司杭州seo网站哪家好
  • 郑州做网站排名公司百度答主中心入口
  • 城关区建设局网站百度词条优化
  • 做苗木免费网站宁波seo优化服务
  • 政府网站建设 文件新闻发布会新闻通稿
  • 数码网站建设总体目标长沙靠谱seo优化
  • 衡阳电商网站建设seo推广软
  • 东莞住建局官方网站上海搜索引擎关键词优化
  • 网站建设怎么推广樱桃bt磁力天堂
  • 购物网站建设新闻搜索引擎排名规则
  • 小馋网站建设书seo网站优化培训价格
  • 民权平台网站建设网站设计的毕业论文
  • 手机网站推荐几个广州seo软件
  • 酒店宣传软文网络优化工作内容
  • a站免费最好看的电影片推荐网站推广引流最快方法
  • js网站评论框武汉关键词包年推广
  • 武义县网站建设他达拉非功效与作用主要会有哪些
  • 创业服务网网站建设方案项目书如何推广平台
  • 黄埔网站建设注册城乡规划师好考吗
  • 义乌网站优化网络营销知识点
  • 广州网站的建设搜索引擎优化是指
  • 企业网站建设费用需要多少钱网站关键词排名优化系统
  • 培训网站 建宁波网站制作与推广价格
  • html网页制作免费模板下载纵横seo