leetcode之53.最大子序和
题目详情
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
链接:https://leetcode-cn.com/problems/maximum-subarray
题解
动态规划:f(i)=max(f(i-1)+num[i],num[i]))
class Solution {
public:int maxSubArray(vector<int>& nums) {//dp//f(i)表示下标为i的最大子序和//更新方程:f(i)=max(f(i-1)+num[i],num[i])) 要么加上下一个要么重新从i开始计和if(nums.empty())return 0;int numSize=nums.size();int maxx=nums[0];int maxx_global=nums[0];for(int i=1;i<numSize;i++){maxx=max(maxx+nums[i],nums[i]);//这里要注意的是maxx并不是全局最优,而是局部相邻选择时的最优,发生重新开始的局势时,有必要去前面最优情况作比较。如果申请数组就不需要这样。maxx_global=max(maxx,maxx_global);}return maxx_global;}
};
或者直接在线处理:
class Solution {
public:int maxSubArray(vector<int>& nums) {//在线处理//策略:如果前面的和是有增益效果的(sum>0),则可以继续;如果前面的和无增益效果的(sum<0),则舍弃;maxx始终保持全局最大。if(nums.empty())return 0;int sum=nums[0];int maxx=sum;for(int i=1;i<nums.size();i++){if(sum>0)sum+=nums[i];elsesum=nums[i];maxx=max(maxx,sum);}return maxx;}
};
转载于:https://www.cnblogs.com/ManWingloeng/p/11454151.html
leetcode之53.最大子序和相关推荐
- LeetCode 题 - 53. 最大子序和 python解法
题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续 ...
- 【LeetCode】53.最大子序和
题目 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 题解 方法1:暴力法 算法 暴力地用两重循环遍历所有情况 代码 class Solution ...
- leetcode 53. 最大子序和 动态规划解法、贪心法以及二分法
题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...
- leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别
这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...
- leetcode - 53. 最大子序和
53. 最大子序和 - 动态规划 -------------------------------------- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), ...
- 贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和
贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和 一.455.分发饼干 题目连接:455. 分发饼干 - 力扣(LeetCode) 思路1:用贪心思想,将饼干数组和胃口数组先排序,然后 ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
- leetcode学习记录5——53.最大子序和
leetcode学习记录 leetcode学习记录五 最大子序和 解题思路 代码 leetcode学习记录五 最大子序和 难度:简单 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数 ...
- LeetCode 53. 最大子序和(动态规划)
文章目录 1. 题目描述 2. 解题 2.1 暴力求解 2.2 动态规划 1. 题目描述 题目链接:https://leetcode-cn.com/problems/maximum-subarray/ ...
最新文章
- 一文全面解析 Postman 工具
- UVa661 Blowing Fuses
- Android设计模式(九)--外观模式
- python day29
- 使用DELPHI编写一个小的控件
- linux编译llvm代码
- (七)全半角转换(转)
- jQuery-DOM
- ES6 开发常用新特性以及简述ES7
- 通道控制方式,通道指令与通道程序
- BZOJ 3876 支线剧情
- 采用python解决实际问题_应用 Python 解决一些实际问题
- 如何远程访问***之easy ***
- Linux-unit-10-11-日志,IP
- 打造自己的Android源码学习环境之三:在虚拟机中安装Ubuntu(下)
- 各银行支付/各种支付平台/php对接支付接口心得/php h5支付接口对接
- dota2api的介绍与使用
- [37期]二三事。老师说标题长才霸气。长长长…
- Base64加解密__完整版有解释
- NLP情感分析基础知识
热门文章
- 使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句
- linux环境 前端开发环境搭建,Linux运维知识之linux 前端环境搭建
- 【C#版本详情回顾】C#2.0主要功能列表
- antd的table遍历之后添加合计行_付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具...
- MySQL的性能调优工具
- OnScrollListener
- mysql数学函数有什么_mysql数学函数有哪些?
- celery cluser redis_celery结合redis 使用
- 今天,我们考大学是为了什么?
- cmd 顺序启动服务_未能连接一个Windows服务 怎么回事