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

    一,一个记录当前子数组和,一个记录最大子数组和

     1 class Solution {
     2 public:
     3     int FindGreatestSumOfSubArray(vector<int> array) {
     6         int cur = array[0];
     7         int maxv=array[0];
     8         for (int i=1; i<array.size(); ++i) {
     9             if(cur<0) cur=array[i];
    10             else cur+=array[i];
    11             maxv=maxv>cur?maxv:cur;
    12         }
    13         return maxv;
    14     }
    15 };

    二,返回最大子数组的序列,如果有多个最大子数组,返回最长的那个。时间复杂度O(n),空间复杂度O(1) =>DP优化后就是滑动窗口的思想了

     1 class Solution {
     2 public:
     3     /**
     4      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     5      *
     6      * 
     7      * @param array int整型vector 
     8      * @return int整型vector
     9      */
    10     vector<int> FindGreatestSumOfSubArray(vector<int>& array) {
    11         // write code here
    12         int cur=array[0];
    13         int maxv=array[0]; 
    14         int lv=0,rv=0;  // 保存结果
    15         int lv2=0,rv2=0;  // 滑动区间
    16         for(int i=1;i<array.size();++i){
    17             if(cur<0){
    18                 cur=array[i];
    19                 lv2=i;
    20                 rv2=i;
    21             }
    22             else {
    23                 cur+=array[i];
    24                 rv2+=1;
    25             }
    26             if((maxv==cur && rv2-lv2>rv-lv) || maxv<cur){
    27                 maxv=cur;
    28                 rv=rv2;
    29                 lv=lv2;
    30             }
    31         }
    32         vector<int> res;
    33         for(int j=lv;j<=rv;++j){
    34             res.push_back(array[j]);
    35         }
    36         return res;
    37     }
    38 };
    心之所愿,永不相忘
  • 相关阅读:
    ASP.NET MVC 学习笔记 1
    安装xp遇到的问题与如何连接共享的打印机
    win8.1 安装
    AspxGridView控件的使用
    JS获取fileupload文件全路径
    正则表达式的学习
    回归起点
    Vmware ESX 5.0 安装与部署
    UITextField检测输入内容不能有空格的处理
    关于cell自动布局约束实现高度自适应问题
  • 原文地址:https://www.cnblogs.com/zgll/p/15760298.html
Copyright © 2011-2022 走看看