给定一个整数数组 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. Mozilla 财报:2017年收入增长超过 4000 万美元
  2. 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和普通变量之完全解读...
  3. SpringBoot:application.properties基本的参数配置
  4. 安卓扫一扫自动跳转软件_ipad软件使用技巧
  5. 在js的函数中用jquery的trim()方法去掉search前后的空格
  6. 打开usb计算机连接怎么办,iqoo3怎么打开usb调试?iqoo3开启usb调试连接电脑的方法...
  7. python软件下载3版本-python
  8. GAN 生成mnist数据
  9. 电脑怎么装linux系统
  10. python万年历差农历程序_批处理万年历实现代码(包括农历日期)
  11. 奇异值分解的几何原理
  12. 广东计算机一级试题答案,广东计算机一级考试试题和答案
  13. 微信小程序刷新当前页面
  14. 腾讯产品18讲10:把握产品需求的管理节奏
  15. 计算机中的光学知识,科学网—光学基础知识大讲堂 ——第3期:详解电磁辐射 - 何卓铭的博文...
  16. 英语口语116之每日十句口语
  17. CATT eCATT
  18. VR中为什么需要把游戏音频放在聚光灯里?
  19. 华为笔试题-素数伴侣
  20. Mysql 监控 performance_schema 拿得起,放不下(2)

热门文章

  1. 从字符串 const str = ‘qwbewrbbeqqbbbweebbbbqee‘;中能得到结果 [“b“, “bb“, “bbb“, “bbbb“] 以下错误语句是?
  2. 科学计算机看电量,解密:关于手机电量为1%是如何科学的算出来的?
  3. java 匿名对象有引用,封闭对象的引用通过匿名类java进行转义
  4. 分享下自己的EmpireofCode进攻策略 https://empireofcode.com/ https://empireofcode.com/game/#
  5. jQuery 打气球小游戏 点击气球爆炸效果
  6. Html5开发之链接标签nav的用法
  7. P4336 [SHOI2016]黑暗前的幻想乡
  8. 洛谷 P1757 通天之分组背包
  9. HTTPS 通俗简介
  10. jquery jgrid filterToolBar beforeSearch 修改postData