2321. 拼接数组的最大分数(leetcode)

https://leetcode.cn/problems/maximum-score-of-spliced-array/description/

这一题应该算一个连续最大子数组思维题,要点是根据差数组去做,然后求最值

class Solution {
public:
    int maximumsSplicedArray(vector<int>& nums1, vector<int>& nums2) {
        // f[i]表示以a[i]为结尾的最大子数组和
        // f[i]=max(f[i-1],0) + a[i];
        // 根据nums1和nums2的差来求最大子数组和
        const int N = 1e5+10;
        int f[N];
        int f2[N];
        int nums[N];
        memset(f,0,sizeof f);
        memset(f2,0,sizeof f2);
        for(int i=0;i<nums1.size();i++)nums[i]=nums1[i]-nums2[i];
        int maxAns=0,minAns=0;
        for(int i=1;i<=nums1.size();i++)
        {
            f[i]=max(f[i-1],0) + nums[i-1];
            f2[i]=min(f2[i-1],0) + nums[i-1];
            maxAns=max(f[i],maxAns);
            minAns=min(f2[i],minAns);
            printf("num=%d,maxAns=%d,minAns=%d\n",nums[i-1],maxAns,minAns);
        }
        int sum1=0,sum2=0;
        for(int i=0;i<nums1.size();i++)
        {
            sum1+=nums1[i];
            sum2+=nums2[i];
        }
        return max(abs(minAns)+sum1,maxAns+sum2);
    }
};

 

posted @   风乐  阅读(4)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示