zoukankan      html  css  js  c++  java
  • 连续子数组的最大和

    题目来源:牛客网     连续最大子数组

     1 class Solution {
     2 public:
     3     int FindGreatestSumOfSubArray(vector<int> array) {
     4         if (array.empty()) return 0;
     5         //一个是max找最大的
     6         //一个是pos记录位置的//其实这个题也不需要
     7         //sum记录和,如果加完以后比没加之前数字还小,就更新pos和sum
     8         int max,sum;
     9         max = array[0];
    10         sum = array[0];
    11         for (int i = 1; i < array.size(); i++) {
    12             if (sum + array[i] < array[i]) sum = array[i];
    13             else sum = sum + array[i];
    14             if (sum > max) max = sum;
    15         }
    16         return max;
    17     }
    18 };

    如果要定位到是哪一串加起来得到的max,就用pos记录更新sum的时候的位置

    愉悦时间:思路大致可以概括为,先找到最大的,有更大的时候就更新。

    sum如果是负的的时候,接下来怎么加都不可能比后面的自己加还要大 //12行的意思

    锵锵,但是如果sum大于0,那就证明它还有成长空间23333

  • 相关阅读:
    hdu6070
    hdu6059( Trie )
    hdu4757(可持久化 Trie )
    csu1216( Trie )
    hdu6058
    hdu6049
    hdu6052
    hdu6041
    hdu1269(有向图强连通分量)
    bzoj2159: Crash 的文明世界
  • 原文地址:https://www.cnblogs.com/yoriko/p/12243047.html
Copyright © 2011-2022 走看看