zoukankan      html  css  js  c++  java
  • 最大子序和

    题目

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    示例:

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

    思路

    1.遍历数组,取当前元素和目前最大子序列组成新的子序列,将其和与当前元素比较,较大者成为新的最大子序列和。

    2.将新的最大子序列和与老的最大子序列和比较,取较大者。

    3.遍历结束获得最大子序列和。

    代码

     class Solution {
            public int maxSubArray(int[] nums) {
                int sum = 0;
                int res = Integer.MIN_VALUE;
                for (int num : nums) {
                    //sum+num表示新的子序列和
                    sum = Integer.max(num, sum + num);
                    //最大的子序列和
                    res = Integer.max(res, sum);
                }
                return res;
            }
        }

    思考

    是否有更快的算法来解决这个问题呢?

    如果您觉得本文对你有用,不妨帮忙点个赞,或者在评论里留言交流,欢迎您持续关注我的博客^_^
  • 相关阅读:
    hdu 1296
    hdu 2101
    hdu 2100
    codeforces 3C
    codeforces 2A
    codeforces 1B
    codeforces 811B
    关于sws_scale() 段错误
    cf 1288 D. Minimax Problem (好题)(二分+二进制表状态+枚举)
    opencv4 鼠标事件 鼠标画线条
  • 原文地址:https://www.cnblogs.com/muxuanchan/p/9823320.html
Copyright © 2011-2022 走看看