LeetCodeブラッシングノート_53。最大サブシーケンス合計

トピックはLeetCodeからです

53.最大サブシーケンス合計

他のソリューションまたはソースコードにアクセスできます:tongji4m3

解説

整数配列numsを指定して、合計が最大の連続サブ配列を見つけ(サブ配列には少なくとも1つの要素が含まれます)、最大の合計を返します。

例:

输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

上級:

O(n)の複雑さのソリューションをすでに実装している場合は、より微妙な分割統治ソリューションを使用してみてください。

アイデア

左から右にトラバースします。0より大きい場合は維持し、それ以外の場合は維持しません。結果は時々判断されます

細部

サブ配列には少なくとも1つの要素が含まれているため、初期化を0にすることはできませんが、intの最小値は

コード

//子数组最少包含一个元素
public int maxSubArray(int[] nums)
{
    
    
    int N = nums.length;
    int result = Integer.MIN_VALUE,temp=0;//look,因为条件是至少包含
    for (int i = 0; i < N; i++)
    {
    
    
        temp = temp > 0 ? temp + nums[i] : nums[i];
        result = Math.max(result, temp);
    }
    return result;
}

複雑さの分析

時間の複雑さ

O(N)O(N) O N

スペースの複雑さ

O(1)O(1) O 1

おすすめ

転載: blog.csdn.net/weixin_42249196/article/details/108232389