• 53. 最大子数组和


    方法一暴力搜索

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
    int n=nums.size();int ans=nums[0];int sum=0;//注意这里,差值/临时存储可以用0。因为没有直接比较并和ans相关联。
    for(int i=0;i<n;i++)
        {
            for(int j=i; j<n;j++)
            {
                sum+=nums[j];
                ans=max(sum,ans);
            }
            sum=0;//注意这里,差值/临时存储可以用0。因为没有直接比较并和ans相关联。
        }
        return ans;
        }
    };
    

    方法二贪心

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
        int n=nums.size();int ans=nums[0];int sum=0;
        int average=std::accumulate(nums.begin(),nums.end(),0.0)/n;//不能解决问题。
    
    
        for(int i=0;i<n;i++)
        {
            sum+=nums[i];
            ans=max(sum,ans);
            if(sum<0)sum=0;//如果都小于0也可以,因为先比较取完最大值了。
        }
        return ans;
        }    
    };
    

    方法三动态规划

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
    int n=nums.size();int ans=nums[0];int sum=0;
    for(int i=0;i<n;i++)
        {
     sum=max(sum+nums[i],nums[i]);
     ans=max(sum,ans);
        }
        return ans;
        }
    };
    

    方法四分治

    //没什么意义
    
  • 相关阅读:
    10-JS的函数学习
    Servlet(生命周期)
    09-js数组常用方法
    08-计算器案例
    07-js数组
    06-js的逻辑结构
    使用css设置三角形
    关于background-size 的一点小坑
    a 标签实现分享功能
    关于页面缩放时css错乱的处理方法---之一
  • 原文地址:https://www.cnblogs.com/fengmao31/p/15935387.html
Copyright © 2020-2023  润新知