寻找和最大的子数组,优化程序

问题描述 投票:0回答:0

我正在尝试找到具有最大总和的整数数组的子数组。我写了下面的代码,但它没有按照 leet 代码进行优化,我在 leetcode 上获得了 LTE。有人可以指出我需要朝哪个方向思考吗?编写循环较少的优化代码时,我应该知道哪些技巧?

int maxSubArray(vector<int>& nums) {
    vector<int> answer(nums.size(), 0);
    int l = 0;
    int r = l + 1;
    int presum, postsum;
    int ans_l, ans_r, maxP;
    ans_l = 0; 
    ans_r = 0; 
    maxP = nums[0];
    postsum = 0;
    int tempsum = 0;
    while(l < nums.size()){
        if(l == 0){
            presum = nums[l];
        }
        
        if (l == nums.size()-1){
            presum = nums[l];
            tempsum = presum;
            if(tempsum > maxP){
                maxP = tempsum;
                ans_l = l;
                ans_r = r;
            }
            break;
        }
        postsum = postsum + nums[r];
        tempsum = postsum + presum;
        if(tempsum > maxP){
            maxP = tempsum;
            ans_l = l;
            ans_r = r;
        }
        //cout<<"pre sum = "<<presum<<", post sum = "<<postsum<<", l = "<<l<<", r = "<<r<<endl;
        
        if(l != nums.size()-1 && r == nums.size()-1){    
            l++;
            r = l;
            presum = nums[l];
            postsum = 0;
            tempsum = presum + postsum;
            if(tempsum > maxP){
                maxP = tempsum;
                ans_l = l;
                ans_r = r;
            }
        }
        r++;
    }
cout<<"max sum = "<<maxP<<", from "<<ans_l<< " to "<<ans_r<<endl;
return maxP;          
}
c++ performance while-loop
© www.soinside.com 2019 - 2024. All rights reserved.