leetcode hot 14

解题思路:这题思路有很多,动态规划,前缀和等,前缀和就是遍历一遍,将每个前缀和与前面最小的前缀和相减,就能得到最大值,然后比较与记录最大值。(还有一种思路就是首先明确最大子串内部一定不会存在某个边缘子串小于0,所以可以遍历一遍先记录继续记录前缀和,然后比较max,当某一个元素进入后前缀和小于0,说明这个之前的这个子串不可能在最大子串中,或者前面已经存在最大子串,前缀和的值清0,从下一个元素继续计算,然后比较)

class Solution {
    public int maxSubArray(int[] nums) {
        int min = 0;
        int max = Integer.MIN_VALUE;
        int sum = 0;
        for(int num:nums){
            sum+=num;
            max = Math.max(sum-min,max);
            min = Math.min(min,sum);
        }
        return max;
    }
}
class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        res = -10**4
        ans = 0
        for i in range(len(nums)):
            ans += nums[i]
            if ans>res:
                res = ans
            if ans<0:
                ans = 0
        return res 
posted @   kukudev  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示