91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

劍指offer:連續子數組的最大和

發布時間:2020-08-02 15:36:24 來源:網絡 閱讀:202 作者:Jayce_SYSU 欄目:編程語言

題目描述
HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會后,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,并期望旁邊的正數會彌補它呢?例如:{6,-3,-2,7,-15,1,2,2},連續子向量的最大和為8(從第0個開始,到第3個為止)。給一個數組,返回它的最大連續子序列的和,你會不會被他忽悠住?(子向量的長度至少是1)

# -*- coding: utf-8 -*-
# @Time         : 2019-07-09 15:45
# @Author       : Jayce Wong
# @ProjectName  : job
# @FileName     : findGreatestSumofSubArray.py
# @Blog         : https://blog.51cto.com/jayce1111
# @Github       : https://github.com/SysuJayce

class Solution:
    """
    求連續子數組的最大和,其實就是說從給定數組中選擇一個子數組,使得子數組的和最大。

    解法0:
    最樸素的解法,就是遍歷所有可能的子數組,然后找到和最大的子數組。共有(1+n)n/2個子數組,然后求
    和的復雜度為O(n),也就是這種解法的時間復雜度約為O(n^3)

    解法1:
    維護兩個變量,分別記錄當前和、最大和,如果當前和大于最大和,那么更新最大和。

    遍歷整個數組,如果加上上一個元素后當前和為負數,那么當前元素不能再與前面元素連起來,
    因為任何數加負數只會更小。所以當前元素需要作為新的子數組的起點,置當前和為當前元素的值

    解法2:
    動態規劃。
    dp[i]表示以array中第i個元素為結尾的子數組的最大和
    dp[i] = array[i],當i=0或dp[i-1]<0
    dp[i] = array[i] + dp[i-1],當dp[i-1]>=0
    """
    def FindGreatestSumOfSubArray1(self, array):
        if not array:
            raise TypeError("Invalid input")

        curSum = 0
        greatestSum = -float('inf')
        for num in array:
            if curSum <= 0:
                curSum = num
            else:
                curSum += num
            greatestSum = max(curSum, greatestSum)

        return greatestSum

    def FindGreatestSumOfSubArray(self, array):
        if not array:
            raise TypeError("Invalid input")

        dp = [array[0]] * len(array)
        for i in range(1, len(array)):
            if dp[i - 1] < 0:
                dp[i] = array[i]
            else:
                dp[i] = array[i] + dp[i - 1]
        return max(dp)

def main():
    solution = Solution()
    nums = [6, -3, -2, 7, -15, 1, 2, 2]
    print(solution.FindGreatestSumOfSubArray(nums))

if __name__ == '__main__':
    main()
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜宁县| 长泰县| 尼玛县| 六盘水市| 临漳县| 灯塔市| 淄博市| 乐陵市| 佛冈县| 广东省| 颍上县| 西昌市| 德安县| 正定县| 枣阳市| 安远县| 合水县| 海宁市| 雅安市| 故城县| 华阴市| 砀山县| 湛江市| 共和县| 安达市| 铅山县| 昭平县| 清原| 石林| 延庆县| 临清市| 翁源县| 信宜市| 禹城市| 台南县| 扎鲁特旗| 阜平县| 耿马| 泗洪县| 龙南县| 盱眙县|