wordpress新建网站注册监理工程师注册查询系统
news/
2025/10/1 20:22:53/
文章来源:
wordpress新建网站,注册监理工程师注册查询系统,网站前台模板下载,一键优化给定一个整数数组 nums #xff0c;找到一个具有最大和的连续子数组#xff08;子数组最少包含一个元素#xff09;#xff0c;返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大#xff0c;为 6。 进阶: 如果你已经实现… 给定一个整数数组 nums 找到一个具有最大和的连续子数组子数组最少包含一个元素返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法尝试使用更为精妙的分治法求解。 看着有点像我之前整理的一道题目乘积最大子数组 https://blog.csdn.net/qq_42604176/article/details/108876793 先用DP试试 1、总目标在左端点为0右端点为nums.size的连续区间中找到最大和 2、子问题在左端点为0右端点为i的连续区间中找到最大和 3、分析状态定义是否符合最优子结构 nums[-2,1,-3,4,-1,2,1,-5,4] f: [-2 ,1, 1,4, 3,5,6,6, 6] 对于nums数组中的每个数有两种选择1个是把它纳入f中还有一种是不纳入f中然后从nums[i]重新开始记录 状态转移方程f[i] max(f[i-1]nums[i],nums[i]) AC代码
class Solution {
public:int maxSubArray(vectorint nums) {int nnums.size(),ansnums[0];vectorint f(n, 0);f[0]nums[0];for(int i1;in;i){f[i] max(nums[i],nums[i]f[i-1]);ans max(ans,f[i]); //在每个不同长度的区间中分别找到最大值并且取这些最大值中的最大值}return ans;}
};第一次错误的原因是没有对f[0]赋初值。 不过感觉时间和空间消耗都比较大让俺想想是为啥。。。 有无大佬能讲解一下优化思路或者待我学成归来再写优化(doge)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924243.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!