• lootcode_53:最大子列和


    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
    
    示例:
    
    输入: [-2,1,-3,4,-1,2,1,-5,4]
    输出: 6
    解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
    进阶:
    
    如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/maximum-subarray
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    
    #暴力解法o(n*n)
    import sys
    class Solution:
        def maxSubArray(self, nums: List[int]) -> int:
            s_max= -sys.maxsize - 1
            length=len(nums)
            if length==1: return nums[0]
            for i in range(length):
                s=nums[i]
                s_max=max(s_max,s)
                for j in range(i+1,length):
                    s=s+nums[j]
                    s_max=max(s_max,s) 
                
            return s_max
    
    提交记录
    201 / 202 个通过测试用例
    状态:超出时间限制
    
    #o(n)
    import sys
    from typing import List
    class Solution:
        def maxSubArray(self, nums: List[int]) -> int:
            #贪心:取当前数与当前数之前和的较大值
            max_num=-sys.maxsize-1
            if not nums:return max_num
            cur=nums[0]
            max_num=max(max_num,cur)
            for i in range(1,len(nums)):
                cur=max(cur+nums[i],nums[i])
                max_num=max(max_num,cur)
            return max_num
    
    #o(n)破坏原数组
    class Solution:
        def maxSubArray(self, nums: List[int]) -> int:
            #动态规划:当前元素的前一个数大于0,则加上当前元素
            max_num=-sys.maxsize-1
            if not nums:return max_num
            sum=nums[0]
            max_num=max(max_num,sum)
            for i in range(1,len(nums)):
                if nums[i-1]>0:
                    nums[i]=nums[i]+nums[i-1]               
                max_num=max(max_num,nums[i])
            return max_num
    
  • 相关阅读:
    Thinkd Pad打开无线网络方法
    模式问题
    SQL数据库,使用事务执行增删改操作,给自己一个后悔的机会
    iOS开发-数据库FMDB队列
    iOS开发-数据库FMDB简单介绍
    iOS开发-地图定位 CoreLocation地理编码
    iOS开发-网络篇 文件的上传
    iOS开发-项目新特性
    iOS开发-Xcode插件管理工具Alcatraz的安装和使用
    iOS开发-AFNetworking 怎样上传数据? 怎样上传模拟表单
  • 原文地址:https://www.cnblogs.com/hqzxwm/p/14030368.html
Copyright © 2020-2023  润新知