题解 | #连续子数组的最大和(二)#

连续子数组的最大和(二)

https://www.nowcoder.com/practice/11662ff51a714bbd8de809a89c481e21

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param array int整型一维数组
# @return int整型一维数组
#
class Solution:
    def FindGreatestSumOfSubArray(self, array: List[int]) -> List[int]:
        # write code here
        # 初始化dp数组
        dp = [i for i in range(len(array))]

        # 定义初始化数组的俩组指针
        # 第一组指针是start,end,这组指针记录的是dp[i]的最大子序列的开始下标和结束下标
        start, end = 0, 1

        # max_start,max_end记录的是dp当前遍历到dpi的所有的最大子序列的开始下标和结束下标
        max_start, max_end = 0, 1

        dp[0] = array[0]

        maxsum = array[0]

        for i in range(1, len(array)):
            # dp方程,列出dp方程
            dp[i] = max(array[i] + dp[i - 1], array[i])
		    #统计下最大值在array[i] + dp[i - 1], array[i]俩个数之间
            sum = max(array[i] + dp[i - 1], array[i])
            
			# 更新下标,有2种情况,一种情况是dp[i]的前面最大子序列加i小于当前元素i,
            #此时需要更新start,end的值为当前元素
            
            if sum==array[i] and sum!=array[i]+dp[i-1]:
                start, end = i, i + 1
                
            
			# 另一种情况是dp[i]的前面最大子序列加i大
            #于当前元素i,此时end的值应该加1,将它囊括进去最新的元素
            else:
                end += 1
				
            # 更新完start,end后,如果start,end组成的和即dp[i]大于已经保存的最大值
            #,那么当前更新下Max_start,max_end

            if sum >  maxsum:
                max_start = start
                max_end = end
            # 如果相等,比较哪个长,元素多,换成哪个
            if sum ==maxsum:
                if len(array[start:end]) > len(array[max_start:max_end]):
                    max_start, max_end = start, end
            else:
                pass
            maxsum=max(sum,maxsum)
        # 待比较结束后,返回最大的列表
        return array[max_start:max_end]

全部评论

相关推荐

这是什么操作什么意思,这公司我服了...
斯派克spark:意思是有比你更便宜的牛马了
点赞 评论 收藏
分享
来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务