leetcode 5229: 拼接数组的最大分数

UE5在Ubuntu22.04.4下的高效开发环境配置指南 本文详细介绍了在Ubuntu 22.04.4系统上配置UE5高效开发环境的完整指南,包括系统准备、显卡驱动安装、UE5引擎编译与配置、开发工具链设置以及性能优化技巧。通过逐步指导,帮助开发者快速搭建稳定的UE5开发环境,解决常见问题,提升开发效率。 阅读详情

题目描述:
给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,长度都是 n 。
你可以选择两个整数 left 和 right ,其中 0 <= left <= right < n ,接着 交换 两个子数组 nums1[left…right] 和 nums2[left…right] 。

例如,设 nums1 = [1,2,3,4,5] 和 nums2 = [11,12,13,14,15] ,整数选择 left = 1 和 right = 2,那么 nums1 会变为 [1,12,13,4,5] 而 nums2 会变为 [11,2,3,14,15] 。

你可以选择执行上述操作 一次 或不执行任何操作。

数组的 分数 取 sum(nums1) 和 sum(nums2) 中的最大值,其中 sum(arr) 是数组 arr 中所有元素之和。返回 可能的最大分数 。

子数组 是数组中连续的一个元素序列。arr[left…right] 表示子数组包含 nums 中下标 left 和 right 之间的元素(含 下标 left 和 right 对应元素)。

示例 1:
输入:nums1 = [60,60,60], nums2 = [10,90,10]
输出:210
解释:选择 left = 1 和 right = 1 ,得到 nums1 = [60,90,60] 和 nums2 = [10,60,10] 。
分数为 max(sum(nums1), sum(nums2)) = max(210, 80) = 210 。

示例 2:
输入:nums1 = [20,40,20,70,30], nums2 = [50,20,50,40,20]
输出:220
解释:选择 left = 3 和 right = 4 ,得到 nums1 = [20,40,20,40,20] 和 nums2 = [50,20,50,70,30] 。
分数为 max(sum(nums1), sum(nums2)) = max(140, 220) = 220 。

示例 3:
输入:nums1 = [7,11,13], nums2 = [1,1,1]
输出:31
解释:选择不交换任何子数组。
分数为 max(sum(nums1), sum(nums2)) = max(31, 3) = 31 。

提示:
n == nums1.length == nums2.length
1 <= n <= 10^5
1 <= nums1[i], nums2[i] <= 104

思路:
首先肯定想到的是暴力的枚举left和right的所有可能,但是注意到数组的长度是可能到达10^ 5,暴力遍历的话时间复杂度是O(n^2),这样运行肯定会超时的。

这是一道智力题
想到 这个最后的结果就是nums1或者nums2与另一个数组交换一部分或者不交换的最大值。
假如最后最大的nums1,那就是nums1的sum和 nums2-nums1 的数组最大的连续和的值相加。
同理,假如最后最大的是nums2,那就是 num2的sum和nums1-nums2 的数组的最大连续和的值相加。
最后,比较这两个值,最大的数就是我们所要求的。
具体的代码:

class Solution:
    def maximumsSplicedArray(self, nums1: List[int], nums2: List[int]) -> int:
        nums_1 = [nums2[k]-nums1[k] for k in range(len(nums1))]
        dp_1 = nums_1
        for i in range(1, len(nums_1)):
            dp_1[i] = max(dp_1[i], dp_1[i-1]+nums_1[i])
        k1 = sum(nums1)+max(max(dp_1), 0)
        nums_2 = [nums1[k]-nums2[k] for k in range(len(nums1))]
        dp_2 = nums_2
        for i in range(1, len(dp_2)):
            dp_2[i] = max(dp_2[i], dp_2[i-1]+nums_2[i])
        k2 = sum(nums2)+max(max(dp_2), 0)
        return max(k1, k2)
用 C# 快速构建一套可扩展的上位机框架(实战+源码思想) 本文介绍了一套基于C#的工业上位机开发框架设计方案。该框架通过模块化设计解决了上位机开发中的常见痛点,包括协议适配、通信管理、UI绑定等问题。核心架构采用分层设计,包含协议接口层、调度器层、通信抽象层和UI层,支持MVVM模式。框架提供了协议插件化扩展能力,通过JSON配置实现设备协议定义,同时封装了日志管理、异常处理等基础功能。该方案具有快速搭建、协议驱动、UI分离等特点,可显著提升上位机开发效率,适用于串口、TCP等多种通信场景,并能快速适配新设备协议。 阅读详情

相关推荐

地理空间坐标系统-不同椭球基准间的坐标转换

基于同一个椭球基准,可以构建三类地理空间坐标系:大地球面坐标系、大地空间直角坐标系、大地投影坐标系。由于坐标原点和椭球长短半径等都相同,这三类坐标系之间可以通过无损的数学方法相互之间进行转换。那么现在问题来了,不同椭球基准(在全球范围来看存在成百上千的椭球基准)之间的坐标怎么转换?比如,北京54、西安80、国家2000,特别是在我国,现在主推国家2000坐标系,那么如何将历史的测绘成果(北京54和...

技术改变世界 8336

0动态规划中等 LeetCode5229. 拼接数组的最大分数

z

31楼下小黑的博客 212

Excel曲线拟合实战:从基础趋势线到高级回归分析

本文系统介绍了Excel曲线拟合的完整工作流,从基础的散点图与趋势线应用,到利用Solver插件进行自定义高级回归分析。文章详细讲解了线性、多项式、指数、对数等六大常用数学模型的适用场景与选择方法,并强调了通过R²值、残差图评估拟合效果、避免过拟合与外推风险的关键步骤,帮助读者掌握从数据探索到预测评估的实战技能。

weixin_29280219的博客 536

Leetcode之第299场周赛小记

Leetcode299周赛记录

小黑的博客 423

Hyper-V创建Ubuntu虚拟机设置固定IP

本文记录使用hyper-v创建ubuntu虚拟机,为虚拟设置固定IP且通过物理机可访问。

2623

快速入门:使用 SQL Server Management Studio (SSMS) 连接和查询 SQL Server 实例

开始使用 SQL Server Management Studio (SSMS) 连接到 SQL Server 实例并运行一些 Transact-SQL (T-SQL) 命令。本文介绍如何连接和查询实例SQL Server。有关 Azure SQL,请参阅连接。若要使用,请参阅连接和查询。若要详细了解如何SQL Server Management Studio,请参阅其他。......

m0_72938729的博客 5729

[LeetCode周赛复盘] 第 299 场周赛20220626

这两天双周赛、周赛给我打emo了

liuliangcan的博客 597

脑影像分析软件推荐 | JuSpace

JuSpace是一种允许基于 MRI 测量与核成像衍生估计的跨模态关联的工具包,它涵盖各种神经递质系统,包括多巴胺能、血清素能、去甲肾上腺素能和 GABA(γ-氨基丁酸) 神经传递。JuSpace 由一组 Matlab 功能以及涵盖各种受体系统的 PET 受体图谱组成。

NHKJ_ZF的博客 1708

Leetcode第 299 场周赛

leetcode 299周赛 依旧是只做出3题

DeathYmz的博客 643

华为OD面试八股真题 - 操作系统 - 1

华为OD技术面,操作系统相关八股真题提供详细解答,这篇博客主要涉及于进程和线程相关知识点

qq_45776114的博客 1640

YOLO26 数据标注工具:LabelImg、Label Studio实战指南:主流标注工具的安装配置与使用技巧,高效完成目标检测数据标注

本文介绍了目标检测中数据标注的核心地位与常用工具。数据标注质量直接影响模型性能,需要关注准确性、一致性等维度。文章详细讲解了边界框、类别标签等基本概念,并对比了LabelImg、Label Studio等主流标注工具的特点。重点介绍了LabelImg的轻量级、易用性等优势,以及Label Studio的协作功能,为不同规模项目提供标注工具选择建议。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1176

编程练习6:最大公约数

最大公约数的两种求法。 注意:在给两个数继续值调换的时候一定要注意利用一个中间变量避免调换过程出现问题导致最终结果有错误 /* 求两个数的最大公约数 date:2019/04/29 */ #include<iostream> using namespace std; void gcd1(int a, int b) { int c; if (a > b) { c...

coding_diamond的博客 7315

Linux V3H 平台开发系列讲解(摄像头)2.3.1 MAX96912 MAX96717 GMSL1 CSI 2lane配置

​ 单路摄像头,数据流类型YUV422, mipi接口,经过MAX96717 串行器,gmsl1链路 到解串器MAX96712,最后mipi csi 2lane(lane0 lane1)输出到 renesa v3h soc开发板; ​

xian18809311584的博客 580

leetcode 43. 1~n整数中1出现的次数

数学

coding_diamond的博客 1876

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

leetcode 剑指offer 44:数字序列中的某一位数字

数学

coding_diamond的博客 1827

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

leetcode 135: 分发糖果

贪心 面试

coding_diamond的博客 1627

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

leetcode 6043 2251树状数组的应用

题目描述6043: 给你一个二维整数数组 rectangles ,其中 rectangles[i] = [li, hi] 表示第 i 个矩形长为 li 高为 hi 。给你一个二维整数数组 points ,其中 points[j] = [xj, yj] 是坐标为 (xj, yj) 的一个点。 第 i 个矩形的 左下角 在 (0, 0) 处,右上角 在 (li, hi) 。 请你返回一个整数数组 count ,长度为 points.length,其中 count[j]是 包含 第 j 个点的矩形数目。 如果 0

coding_diamond的博客 1318

编程练习3:ASCII码排序

题目: 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。 输入描述: 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。 输出描述; 对于每组输入数据,输出一行,字符中间用一个空格分开。 代码思路: 本题主要考察的有两个方面: (1)ASCII码大小如何进行比较,经测试,ASCII码大小可以直接根据 ...

coding_diamond的博客 1159

编程练习5:后缀表达式的计算(int上计算器)

要求:将输入的一个中缀表达式转换为后缀表达式进行输出,输出后利用后缀表达式计算式子的结果,将结果进行输出。 思路: 中缀转后缀详见编程练习4 这里处理的时候讲所得到的后缀的结果放置在一个vector中,相比较放在stack中更好的进行取数进行运算 这里需要注意的一点是vector为string类型:原因:以为可能出现229 16这样的数字就不能够每一个符号一个符号的进行判断。 在进行运...

coding_diamond的博客 1130

编程练习1:加法

加法: 两个数的相加,注意题目中未标明,是整型数据相加还是浮点型数据相加,所以需要进行根据给出的测试数据进行判断。 代码部分: #include using namespace std; int main(void) {  int a, b;  cin >> a;  cin >> b;  cout << a + b &l...

coding_diamond的博客 1075

编程练习2:字符串匹配问题

题目:括号配对问题 现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", “]”, “(”, “)” 四种字符。 思路: (1) 利用栈来完成这个操作,在C++中有已经封存好的栈,...

coding_diamond的博客 764

leetcode 剑指offer56-II:数组中数字出现的次数II

位运算

coding_diamond的博客 677

leetcode 473:火柴拼正方形 回溯

回溯

coding_diamond的博客 548

前缀和题型总结 I: leetcode 467、795、904、992、1109

前缀和

coding_diamond的博客 538

leetcode 152:最大乘积子数组

题目描述: 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 示例1: 输入: nums = [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例2: 输入: nums = [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 思路1: 通过递归进行暴力求解,每个元素有选和不选两种情况,保

coding_diamond的博客 506

二维DP: leetcode 1186、

二维动态规划

coding_diamond的博客 382
上一篇: leetcode 剑指offer 44:数字序列中的某一位数字
下一篇: 前缀和题型总结 I: leetcode 467、795、904、992、1109
coding_diamond
博客等级 码龄8年 8粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值