给定一个整数数组 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(vector<int>& nums) {int n=nums.size(),ans=nums[0];vector<int> f(n, 0);f[0]=nums[0];for(int i=1;i<n;++i){f[i] =max(nums[i],nums[i]+f[i-1]);ans = max(ans,f[i]);       //在每个不同长度的区间中分别找到最大值,并且取这些最大值中的最大值}return ans;}
};

第一次错误的原因是没有对f[0]赋初值。

不过感觉时间和空间消耗都比较大,让俺想想是为啥。。。
有无大佬能讲解一下优化思路,或者待我学成归来再写优化(doge)

LeetCode 53:最大子序和解题以及优化思路(第一次独立刷题记录)相关推荐

  1. leetcode 53. 最大子序和 动态规划解法、贪心法以及二分法

    题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...

  2. leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别

    这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...

  3. leetcode - 53. 最大子序和

    53. 最大子序和 - 动态规划 -------------------------------------- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), ...

  4. LeetCode 53. 最大子序和(动态规划)

    文章目录 1. 题目描述 2. 解题 2.1 暴力求解 2.2 动态规划 1. 题目描述 题目链接:https://leetcode-cn.com/problems/maximum-subarray/ ...

  5. leetcode 53.最大子序和

    难度:简单 频率:159 题目 给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 解题思路 :动态规划(贪心) 解题方法: 1.对数组进行遍历 2.有 ...

  6. LeetCode 53最大子序和

    力扣 思路: 「连续」是关键字,连续很重要,不是子序列. 动态规划 详细解答请参考力扣 定义dp数组:        dp [i] 表示以nums[i]结尾的最大连续子数组的和 状态转移方程:    ...

  7. LeetCode 53. 最大子序和(Maximum Subarray)

    第一次提交成功 class Solution { public:int maxSubArray(vector<int>& nums) {if (nums.size() == 1) ...

  8. leetcode 53. 最大子序和(C语言)

    题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...

  9. [leetcode] 53.最大子序和

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释: ...

最新文章

  1. Mysql的体系结构概览
  2. sqlserver 把SELECT结果集中一列的所有的值 用逗号隔开放进一个字段内
  3. 云服务器php版本修改,云服务器 更改php版本
  4. CSS3 Transitions, Transforms和Animation的使用
  5. 迭代DOM集合的几种方法
  6. 2014025675 《嵌入式系统程序设计》第七周学习总结
  7. 第二十四章:页面导航(六) 1
  8. php 导出excel 汉字乱码问题
  9. LVS/NAT的配置和应用
  10. NSThread、Cocoa NSOperation
  11. 统计学基础知识有哪些?看这一篇就够了
  12. Apple Music 推出空间音频和无损音频
  13. 网站运维:git工具(10):GitLab安装和使用
  14. Java——判断回文
  15. 【网络修复】浅谈 “Ping通” 的意思
  16. 架构师之路---架构的演变详解
  17. GG平面图和RNG平面图的matlab实现
  18. 前端设计师常用的一些基础工具素材合集
  19. 4.1 Beamer海报
  20. C语言字符串中使用宏替换

热门文章

  1. echarts 卡_图表太丑怎么破,ECharts神器带你飞!
  2. html5测试题整理--针对标签的概念性
  3. 【APICloud系列|14】xcode下载地址
  4. mysql组件化_MySql笔记
  5. React Antd中样式的修改
  6. JS之setTimeOut与clearTimeOut
  7. 实现小程序canvas拖拽功能
  8. 100*100的 canvas 占多少内存?
  9. css定位position
  10. Xshell 基本使用方式 (1) -- 使用Xshell 连接 VMware下的linux系统