劍指offer 面試42題


面試42題:

題目:連續子數組的最大和

題:輸入一個整形數組,數組里有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。要求時間復雜度為O(n)

解題思路:在數組里從前向后遍歷,記錄下每次的“當前累加子數組和”和“當前的最大子數組和”(其本身包含“動態規划”的思想,詳見劍指offer P220)

解題代碼:

# -*- coding:utf-8 -*-
class Solution:
    g_InvalidInput=False
    def FindGreatestSumOfSubArray(self, array):
        # write code here
        if not array or len(array)<=0:
            g_InvalidInput=True
            return 0
        
        g_InvalidInput=False
        curSum=0
        greatSum=float('-inf')
        for i in array:
            if curSum<=0:
                curSum=i
            else:
                curSum+=i
            if curSum>greatSum:
                greatSum=curSum
        return greatSum

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM