从最大子数组和问题详尽贪心算法策略

问题:给定数组 a[1,2..n] ,求最大子数组和,即找出 1ijn 使得 a[i]+a[i]+..+a[j] 值最大。

有三种方法可以解决上述问题:
第一种 :暴力枚举法,其时间复杂度为 O(n3)
第二种 :优化枚举法,其时间复杂度为 O(n2)
第三种 :贪心方法,其时间复杂度为 O(n)

以上三种方法,暴力枚举是一种万能的算法,但不是对于任何问题都适用,优化枚举是一种较为优化的算法,贪心算法则是本题的最优解。如果一个问题,你给出的算法时间复杂度为 O(n3) O(n2) O(2n) O(n) 我们需要注意两点.
1. 明确数据量的大小.
2. 可能会有更优化的方法.

谈算法不谈时间复杂度等于耍流氓,本题是一道经典的算法题,前两种方法比较好理解。下面我们给出详细思路:

方法一:

暴力枚举法:
    包括三层循环,首先定义一个数组nums,第一层循环从数组头0 遍历每个位置 start 作为子数组起始索引,第二层循环,从 start 处遍历 大于等于 start 的位置

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值