zoukankan      html  css  js  c++  java
  • 53. 最大子序和

    描述

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    示例:
    输入: [-2,1,-3,4,-1,2,1,-5,4],
    输出: 6
    解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

    思路

    • 方法1 动态规划
      在线算法,遍历数组求和时,如果当前sum<0,对于最大和的累积没有帮助便舍弃掉,sum=nums[i],只需遍历一次便可得到最终的结果。
    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
            int sum=0,max=nums[0];
            for(int i=0;i<nums.size();i++){
                sum=sum>0?sum+nums[i]:nums[i];
                max=max>sum?max:sum;
            }
            return max;
        }
    };
    
    • 方法2 分治算法 线段树
  • 相关阅读:
    交换实验
    ISIS简单配置
    bgp联盟
    BGP2
    BGP 1
    BGP反射器
    ospf实验3
    bzoj 4503: 两个串
    bzoj 4259: 残缺的字符串
    COGS 2287. [HZOI 2015]疯狂的机器人
  • 原文地址:https://www.cnblogs.com/hunter-w/p/12824021.html
Copyright © 2011-2022 走看看