当前位置: 首页 > 知识库问答 >
问题:

如何在C++中降低这个解决方案的时间复杂性?

司徒捷
2023-03-14

给定一个整数数组nums,查找具有最大和的相邻子数组(至少包含一个数字)并返回其和。

示例:

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        
        
        int max=INT_MIN;
        int result;
        int i,j;
        if(nums.size()==1)
            return nums[0];
        if(nums.size()==0)
            return 0;
        for(i=0;i<nums.size();i++)
        {
            
            for(j=i;j<nums.size();j++)
            {
                
                result=accumulate(nums.begin()+i,nums.begin()+j+1,0);
                if(result>max)
                    max=result;
                
            }
            
        }
        return max;
    }
};

共有1个答案

何海
2023-03-14

这可以使用Kadane的算法

#include<algorithm> //this header file is required for max function.
class Solution
{
public:
    int maxSubArray(vector<int>& nums) {
        int temp=0;
        int max_sum=0;
        for(int i=0;i<nums.size();i++)
        {
            temp=max(temp+nums[i],nums[i]);
            max_sum=max(temp,max_sum);
        }
        return max_sum;
    }
};
 类似资料:
  • 下面的代码接受一个整数t,然后再接受3个整数t次,并返回可以同时从两个不同整数中减去1的最大次数,而当只剩下0以上的1个整数时,程序停止。我已经解决了这个问题,但我想降低代码的时间复杂度,但我不知道怎么做。 如何在不使用所有这些增加时间复杂度的循环的情况下获得相同的输出? 编辑:我不想我的代码为我重新编写,这是家庭作业,我想要的是提示和帮助,这样我就可以减少时间复杂性,我不知道怎么做。 编辑2:在

  • 我正在解决这个问题:回文子串 给定一个字符串,您的任务是计算该字符串中有多少回文子字符串。 具有不同开始索引或结束索引的子字符串被计为不同的子字符串,即使它们包含相同的字符。 我尝试了多种方法,根据我的说法,这两种方法的复杂性都为。但是leetcode接受一种解决方案并返回超过另一种解决方案的时间限制。 可接受的解决方案: 超出时间限制的解决方案 这两种算法中唯一的变化是,第一种算法使用Pytho

  • 问题内容: 我有一个接收对象并根据其检测到的对象类型执行某些操作的方法: 如何降低环复杂性?我四处搜寻,但找不到任何有用的资讯。 问题答案: 您不能为此使用面向对象的方法吗?创建具有该方法的接口,然后创建实现所需行为的子类?然后调用将执行适当的行为?

  • 问题内容: 我正在研究将RequestDTO发送到Web服务的类。我需要先验证请求,然后再发送。 可以从3个不同的地方发送请求,每个“ requesttype”都有不同的验证规则,例如request1必须具有名称和电话号码,request2必须具有地址,等等) 我有一个DTO,其中包含很长的字段列表(名称,地址,城市,电话号码等),无论请求是哪种类型,DTO都发送相同的消息。 我创建了3种不同的验

  • 以下代码是竞赛中问题陈述的解决方案。给出的时间限制为1s。该代码在5/7个测试用例中正常工作。对于其他情况,超过了时间限制。如何降低下面代码的时间复杂度? 编辑:问题陈述被定义为返回数字n的值或n/2、n/3、n/4之和,以最大值为准。例如,如果输入为24,则可以进一步减少或交换为12 8 6=26,12可以减少为6 4 3=13。8和6不应减少,因为这可能会降低值。最后的答案是13 8 6=27

  • 帮助我减少这个程序的时间复杂性 输出:为每个测试用例输出这样的对的数量。 约束条件:T≤10;N≤100000;A[i]≤1000000 示例输入(明文链接)