#53.   Maximum Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.

题解:动态规划解这题,假设max_sum记录了前k个元素的最大子序列和,这时添加第k+1个元素,由于是连续子序列这个限制,所以如果k+1这个元素之前的和是小于0的,那么对于增大k+1这个元素从而去组成最大子序列是没有贡献的,所以可以把sum 置0。举个例子,-1, -2 ,4, -5, 7这里假定7为第k+1个元素,那么很明显可以看出,之前的sum = -5 + 4 =-1,那么这样对于7来说只会减少它,所以直接置sum = 0, 0 + 7才能得到正确的答案。再拓展这个数组, -1, -2, 4, -5, 7, 1 这里1之前的sum = 7 > 0,对于后面的1来组成最大子序列是有贡献的,所以sum = 7 + 1 =8。再注意一点,只要sum不减到负数,中间出现小于0的元素是没关系的,sum仍然可以继续累加。

即临时sum[k+1]=max{nums[i],nums[i]+sum[k]},用max_sum存储最大的子序列和不断更新即可。

class Solution {
public:int maxSubArray(vector<int>& nums) {if(nums.size()==0)return 0;int sum=nums[0];int max_sum=sum;for(int i=1;i<nums.size();i++){sum=max(nums[i],sum+nums[i]);max_sum=max(sum,max_sum);}return max_sum;}
};

转载于:https://www.cnblogs.com/fengxw/p/6083786.html

Leetcode-53 Maximum Subarray相关推荐

  1. 【DP】LeetCode 53. Maximum Subarray

    LeetCode 53. Maximum Subarray Solution1:我的答案 动态规划 class Solution { public:int maxSubArray(vector< ...

  2. 【动态规划】LeetCode 53. Maximum Subarray

    LeetCode 53. Maximum Subarray 原题描述(求子序列最大和/最大子串):Find the contiguous subarray within an array (conta ...

  3. [Lintcode]41. Maximum Subarray/[Leetcode]53. Maximum Subarray

    41. Maximum Subarray/53. Maximum Subarray 本题难度: Eas Topic: Dynamic Programming Description Given an ...

  4. LeetCode(53):Maximum Subarray

    Maximum Subarray: Find the contiguous subarray within an array (containing at least one number) whic ...

  5. [LeetCode]: 53: Maximum Subarray

    题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...

  6. leetCode 53. maximum subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  7. LeetCode#53 Maximum Subarray

    Problem Difinition: Find the contiguous subarray within an array (containing at least one number) wh ...

  8. C#解leetcode 53.Maximum Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  9. 53.Maximum Subarray

    /** 53.Maximum Subarray * 2016-5-7 by Mingyang * 如果我们从头遍历这个数组.对于数组中的其中一个元素,它只有两个选择: 1.* 要么加入之前的数组加和之 ...

  10. LeetCode 53. Maximum Subarray--动态规划--C++,Python解法

    题目地址:Maximum Subarray - LeetCode Given an integer array nums, find the contiguous subarray (containi ...

最新文章

  1. 【复盘】小朋友的奇思妙想
  2. 敏捷开发中如何定义“完成”?
  3. 源码里throw new RuntimeException(“Stub!“)什么意思
  4. C++继承与派生(原理归纳)
  5. eclipse log4j 日志直接定位到source
  6. 若依的框架怎么样_基于bootstrapTable的若依框架如何获取表格选中行的整行数据?...
  7. setcellvalue 格式_POI对Excel单元格的格式的设置参数
  8. VUE页面实现加载外部HTML方法
  9. myeclipse中对jar包中的类热部署调试方法介绍
  10. 深入浅出TCP三次握手 (多图详解)
  11. 飞行CSS3导航菜单
  12. signature=1be7575a614ba3597c2c53247a739d1c,18-02-07【摄影机系统】ARRI大画幅摄影机系统常见问题解答...
  13. 2022蓝桥杯B组—积木画——递推算法
  14. 你究竟多想成功?(nba励志视频)
  15. 使用Arduino Motor Shield控制步进制电机
  16. 在chrome中设置禁止访问的网站
  17. 使用 Web3.js 连接以太坊节点并查询区块链数据
  18. Linux添加用户练习
  19. 迅为RK3568开发板实现的NVR/XVR方案
  20. Cesium淹没分析(干货)

热门文章

  1. 【机器视觉】 dev_set_paint算子
  2. 【STM32】硬件随机数程序示例
  3. 【Linux】一步一步学Linux——nm命令(250)
  4. 【C++】 C++标准模板库(八) MultiMaps
  5. powermock跳过某方法_变频调速电动机产生机械共振原因和处理方法
  6. mysql安装ssl证书_Mysql配置ssl证书
  7. struts2找不到action_第一次用上Struts2框架做Web开发的体验……
  8. mac m1下golang连接mysql极速入门
  9. wasm-simd入门(卷积指令)
  10. 移动零—leetcode283