首页 > 其他分享 >2321. 拼接数组的最大分数(leetcode)

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

时间:2024-04-14 20:34:14浏览次数:12  
标签:f2 int memset 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);
    }
};

 

标签:f2,int,memset,2321,拼接,数组,leetcode
From: https://www.cnblogs.com/lxl-233/p/18134634

相关文章

  • LeetCode 面试经典150题---006
    玩了一天多,两天没写了,下次绝对不摆了(最多摆一天)。####42.接雨水给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。n==height.length1<=n<=2*1040<=height[i]<=105不用头想都知道这个题肯定只能用线性复杂度做,至于怎......
  • LeetCode三则
    1.给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2:输入:nums1=[1,2],nums2=[3,......
  • LeetCode四则
    1.给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],targ......
  • 最长递增子序列leetcode的总结
    使用动态规划解决,首先明白dp数组的含义dp[i]表示在位置i时最长的递增子序列dp[i]=max(dp[j]+1,dp[i])为递推公式初始化dp[i]=1都初始化为1因为最基本的每一个位置至少为一个遍历顺序for(inti=2;i<len;i++){            for(intj=0;j<i;j++){if(n......
  • 算法训练营Day08-LeetCode344. 反转字符串 && 541. 反转字符串 II && 151. 反转字符串
    344.反转字符串题目链接:LeetCode344.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题思路:字符串首尾字符交换即可完成反转。定......
  • LeetCode 2439. 最小化数组中的最大值
    给你一个下标从 0 开始的数组 nums ,它含有 n 个非负整数。每一步操作中,你需要:选择一个满足 1<=i<n 的整数 i ,且 nums[i]>0 。将 nums[i] 减1。将 nums[i-1] 加1。你可以对数组执行 任意 次上述操作,请你返回可以得到的 nums 数组中 最大值......
  • LeetCode 1760. 袋子里最少数目的球
    给你一个整数数组 nums ,其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。你可以进行如下操作至多 maxOperations 次:选择任意一个袋子,并将袋子里的球分到 2个新的袋子中,每个袋子里都有 正整数 个球。比方说,一个袋子里有 5 个......
  • LeetCode 面试经典150题---005
    ####135.分发糖果n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目。n==rat......
  • 刷leetcode有感
    ......
  • Leetcode反转字串541/翻转字串的单词151/实现 strStr方法28/重复的子字符串459
    前言Leetcode541/151/28一、541题(反转字符串)题目描述:给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余......