美文网首页面试题
python算法:最大连续子数和

python算法:最大连续子数和

作者: python小玩家 | 来源:发表于2017-11-24 17:12 被阅读14次

题目:给定数组a[1…n],求最大子数组和,即找出1<=i<=j<=n,使a[i]+a[i+1]+…+a[j]最大。

思路:遍历一遍进行累加sum, 申请变量ans保存当前最大值,如果sum<0时候进行清空,这样,ans总是可以保持最大。
时间复杂度为O(n)
如果全负数的输入,直接返回最大的一个值即可


# 给定数组a[1…n],求最大连续子数组和,即找出1<=i<=j<=n,使a[i]+a[i+1]+…+a[j]最大

class MaxSum(object):
    def __init__(self, init_list):
        self.l = init_list
        self.subl = []

    def max_sum(self):
        sum = 0
        ans = 0

        if max(self.l) < 0:
            return max(self.l)

        for x in self.l:
            sum += x
            ans = sum if sum > ans else ans
            print 'x:%s, sum:%s  ans:%s'%(x, sum,ans)
            if sum < 0: sum = 0

        return ans

if __name__ == '__main__':
    test=[-1, -1,-5,-5,-1,-33,-10]
    n = MaxSum(test)
    print n.max_sum()

相关文章

  • python算法:最大连续子数和

    题目:给定数组a[1…n],求最大子数组和,即找出1<=i<=j<=n,使a[i]+a[i+1]+…+a[j]最大...

  • python算法之最大连续子数组

    暴力法:直接求解list[i, j]的值。=,用for循环去遍历,时间复杂度为o(n**3) 其中Python写法...

  • 8. 动态规划

    1. 最大连续子数组和 求数组中连续的一个或多个子数组的最大和,并记录开始和结束位置 1.1 最大子矩阵和 算法思...

  • 面试题2

    四、数据结构和算法 1、求一串数字序列中的连续子串最大和,比如arr=1 -2 3 -1 2,连续子串最大和就是3...

  • 360一面(已跪)

    1.先来了两个算法题 给一个无序的序列,序列中的数为整数(可正可负),求连续子序列的和的最大值。例:-8,1,3,...

  • 07-03:动态规划review1

    1、最大连续子数组和 关键核心是累加和的正负: 2、零钱组合 1)最少硬币数 总钱数:总硬币数:动态规划迭代:...

  • 第21章 最长上升子序列和最大子段和

    1、蒜头君的最大子段和 算法分析 方法一:(动态规划) 1、设 f(i) 表示以第i 个数字为结尾的最大连续子序...

  • 1-1 算法 - 最大连续子数组和

    一、 问题描述   给出一个一维数组,数组中的数有正有负,求该数组中连续元素之和最大值 二、暴力法 2.1 解题思...

  • LeetCode 子数组最大平均数 I

    给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。 示例: 提示: 1 <= k <...

  • 643. 子数组最大平均数 I

    内容 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。 示例 1: 输入: [1,...

网友评论

    本文标题:python算法:最大连续子数和

    本文链接:https://www.haomeiwen.com/subject/ezxfbxtx.html