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

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

    示例:

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

    利用简单动态规划, 当前数组num[i]有两种情况:

    1). 被添加到之前的连续子序中,使得之前的连续子序和增加。

    2).  或者以当前值重新开一个起点时的值比被增加到上一个子序后的子序和更大: nums[i] > nums[i]+sum; 并更新sum;

    class Solution {
    public:
        int max(int a, int b){
            return a > b ? a : b;
        }
        
        int maxSubArray(vector<int>& nums) {
            vector<int> result;           //临时存放子序
            int saved_max = nums[0]; //临时存放最大子序
            int sum = nums[0];          //最后最大结果
            vector<int> fin_result;      //最后最大结果子序
            for(int i = 1; i < nums.size(); i++) 
            {
                //saved_max = max(nums[i], nums[i]+max); 
                if(nums[i] < nums[i] + saved_max){
                    saved_max += nums[i];
                    result.push_back(nums[i]);
                } else {
                    result.clear();
                    result.push_back(nums[i]);                    
                    
                    saved_max = nums[i];
                }
               /* if(saved_max > total_max) {
                    total_max = saved_max;
                    fin_result.clear();
                    fin_result.insert(fin_result.begin(), result.begin(), result.end() );
                }*/
                sum = max(saved_max, sum);
                //total_max = saved_max > total_max ? saved_max : total_max;   
            }
            /*for(int i = 0; i < fin_result.size(); i++) {
               cout << fin_result[i] << ",";
            }*/
            return sum;
        }
    };

      

    The Safest Way to Get what you Want is to Try and Deserve What you Want.
  • 相关阅读:
    .net core之上传文件的限制
    如何Telnet端口
    ES坑之logstash配置文件
    MySQL报错packets larger than max_allowed_packet are not allowed
    ES坑之安装
    ES坑之概述
    Git
    IDEA 搭建 maven(下)
    IDEA搭建maven(上)
    JDBC
  • 原文地址:https://www.cnblogs.com/Shinered/p/11378395.html
Copyright © 2011-2022 走看看