• 最大子序和


    题目: 给定一个整数数组 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.
  • 相关阅读:
    脚手架自建从开始到发布
    零散点总结
    2019.3.7 chrome72下载图片卡死问题
    2019.2.18 一九年的新篇章
    2018.10.12 布局终结
    2018.7.23 放大缩小菜单
    2018.7.19 横向收缩菜单动画
    2018.6.8 openlayers.js学习(汇总)
    Elasticsearch 排序
    easyui tree树节点上移下移 选中节点加背景色
  • 原文地址:https://www.cnblogs.com/Shinered/p/11378395.html
Copyright © 2020-2023  润新知