LeetCode 1537. 最大得分

【双指针】【C++算法】1537. 最大得分|1961 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。 从左到右遍历当前数组。 如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。 得分 定义为合法路径中不同数字的和。 请你返回 所有可能 合法路径 中的最大得分。由于答案可能很大,请你将它对 10^9 + 7 取余后返回。 阅读详情

题目链接:LeetCode 1537. 最大得分

题意:

   你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。

一条 合法路径 定义如下:

  • 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。
  • 从左到右遍历当前数组。
  • 如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。

得分定义为合法路径中不同数字的和。

请你返回所有可能合法路径中的最大得分。

由于答案可能很大,请你将它对 10^9 + 7 取余后返回。

输入:nums1 = [2,4,5,8,10], nums2 = [4,6,8,9]
输出:30
解释:合法路径包括:
[2,4,5,8,10], [2,4,5,8,9], [2,4,6,8,9], [2,4,6,8,10],(从 nums1 开始遍历)
[4,6,8,9], [4,5,8,10], [4,5,8,9], [4,6,8,10]  (从 nums2 开始遍历)
最大得分为上图中的绿色路径 [2,4,6,8,10] 。

 

解题思路:

官方题解

class Solution {

    /**
     * @param Integer[] $nums1
     * @param Integer[] $nums2
     * @return Integer
     */
    function maxSum($nums1, $nums2) {
    	$n1 = 0; $n2 = 0; $k = 0;
    	$n = count($nums1); $m = count($nums2);
    	$i = 0; $j = 0;
    	while($i < $n || $j < $m) {
    		if($i < $n && $j < $m) {
    			if($nums1[$i] < $nums2[$j]) {
    				$n1 += $nums1[$i];
    				$i++;
    			}
    			else if($nums1[$i] > $nums2[$j]) {
    				$n2 += $nums2[$j];
    				$j++;
    			}
    			else {
    				$k = max($n1, $n2) + $nums1	[$i];
    				$n1 = $n2 = $k;
    				$i++; $j++;
    			}
    		}
    		else if($i < $n) {
    			$n1 += $nums1[$i]; $i++;
    		}
    		else if($j < $m) {
    			$n2 += $nums2[$j]; $j++;
    		}
    	}
    	return max($n1, $n2) % (1e9+7);
    }
}
湿敏电阻HR202的两种驱动方案实测:IO充放电法 vs. 交流方波ADC法,哪个更适合你? 本文深入评测湿敏电阻HR202的两种驱动方案:IO充放电法和交流方波ADC法。通过原理图分析、精度实测和资源占用对比,揭示交流方波ADC法在精度和稳定性上的优势,特别适合长期监测场景。同时提供IO充放电法在资源受限情况下的应用建议,帮助工程师根据项目需求做出最优选择。 阅读详情

相关推荐

FPGA 学习系列(2):Verilog 语法基础

Verilog 由门级建模数据流建模行为建模门级建模(Gate Level Modeling):使用基本逻辑门描述电路,接近硬件物理结构。数据流建模(Data Flow Modeling):使用assign语句进行组合逻辑建模,类似数学方程式。行为建模(Behavioral Modeling):使用always代码块和if-elsecase等控制语句建模,抽象程度较高。Verilog 代码一般由模块(module)组成,每个模块描述一个独立的硬件功能。

Azperk的博客 988

【双指针】A027_LC_最大得分(递推)

一、Problem 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始) 从左到右遍历当前数组 如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换路径到另一个- 数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次) 得分定义为合法路径中不同数字的和 请你返回所有可能合法路径中的最大得分 由于答案可能很大,请你将它对 10^9 + 7 取余后返回 输入:

无敌兔0x01 413

[QT笔记]QTableView与QTableWidget表头设置实战对比

本文深入对比了QT开发中QTableView与QTableWidget在表头设置上的核心差异与实践方法。QTableWidget提供开箱即用的便捷API,适合快速开发;而QTableView遵循模型-视图架构,表头数据由模型管理,虽设置稍复杂但灵活性与扩展性更强。文章通过实战代码示例,详细解析了两种组件的适用场景、性能考量及常见避坑指南,帮助开发者根据项目需求做出高效选择。

weixin_29018335的博客 322

LeetCode 179:最大数(贪心算法)—— 题解

贪心算法——最大数

2601_96587588的博客 729

Cadence Allegro通过手工绘制板框的方法

Cadence Allegro通过手工绘制板框的方法 Cadence Allegro绘制板框有三个方法: 1、通过手工绘制板框; 2、通过向导绘制板框; 3、通过导入DXF文件导绘制板框; 本章将教会大家如何通过手工的方法绘制100mm的矩形板框。 方法步骤如下: 一、通过放置绘图工具2D线绘制; 1、运行Cadence Allegro软件,打开File菜单栏,选择New。 2、这时软件会弹出Ne...

LGCPCB的博客 2万+

labview的TDMS文件读写

本文先介绍TDMS概念和文件结构,然后介绍VI如何使用,最后分析一个labview的自带范例

观则明的博客 1万+

LeetCode 2786. 访问数组中的位置使分数最大(动态规划dp)

【代码】LeetCode 2786. 访问数组中的位置使分数最大(动态规划dp)

记录一些刷过的题并分享学习心得 479

椭圆 —— 从理论推导到最小二乘法拟合

前言 椭圆在高中数学里就开始提到,都是从标准方程开始如: x2a2+y2b2=1(a>b>0) \frac{x^2}{a^2}+\frac{y^2}{b^2}=1(a>b>0) a2x2​+b2y2​=1(a>b>0) 其中 aaa 为椭圆的长轴,bbb 为椭圆短轴。如长轴为 111 ,短轴为 0.50.50.5 的椭圆可以这样画出 ezplot('x^2/1^2 + y^2/0.5^2 = 1',[-1.5 1.5 -1 1]) grid on; 标准方程可以很方便

学徒浩子 2万+

LeetCode -贪心/双指针/二分查找/排序

文章目录一. 贪心算法二. 双指针1. 典型 Two Sum2. 归并数组3. 快慢指针 一. 贪心算法 二. 双指针 1. 典型 Two Sum 例题167。采用相反的两个指针遍历数组。一个初始指向最小的元素,即数组最左边,向右遍历;一个初始指向最大的元素,即数组最右边,向左遍历。 2. 归并数组 例题88。归并两个有序数组使之成为一个有序数组。如果不重新开辟空间,直接将数组b中的元素插入到数组a中,会出现数组a后续的元素被覆盖的情况(元素需要不断后移)。 所以,如果数组的数据有被覆盖的风险,可以记得用倒

weixin_39505091的博客 1630

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理中,解决了分割的问题之后,下面就是属性信息的提取。在这其中,有一种属性是非常重要的 ,那就是外界轮廓的边界点获取。这个边界点,可以用来计算长度,也可以用来进行直线、圆的拟合,具体的用途取决于现场的实际使用场景。目前qmacvisual支持对边界点的提取,相关控件可以直接用来提取边界点。

嵌入式-老费,一个分享专业嵌入式知识的blog 882

PostgreSQL面试题及详细答案120道(101-120)

本文针对PostgreSQL数据库提供全面的性能优化方案,涵盖10个关键面试题解析。主要内容包括:1)并发参数调优(max_connections、worker_processes);2)缓存设置(effective_cache_size);3)WAL日志优化;4)慢查询监控与日志配置;5)会话管理与阻塞处理;6)高写入场景优化策略;7)存储类型参数调整;8)自动清理机制配置;9)大表DDL操作避坑指南;10)性能瓶颈诊断方法论。对DBA和开发者具有实操指导价值

大剑师兰特的GIS世界 855

力扣算法题

1.合并两个有序数组(简单) 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。 (1)解法一,挺快的但是需要用到辅助空间 class Solution { public void merge(int[] nums1, int m, int[] num

阿也的博客 786

使用 MATLAB/Simulink 搭建一个 无人机群间数据交换与协同控制仿真系统

本文提供了一份详细的Simulink无人机群协同控制仿真教程。主要内容包括:无人机群系统架构设计(去中心化网络、通信分层)、三维运动建模、空-空通信链路实现(距离判断、无线信道)、分布式Consensus控制算法开发,以及性能评估指标设定。教程采用模块化设计思路,通过ModelReference构建多无人机并行模型,并给出了MATLAB函数实现关键算法。最后展示了预期仿真结果(收敛时间<15s、位置偏差<2m)和进阶应用方向(编队飞行、AI协同等),帮助读者掌握群体智能系统的建模与仿真方法。

amy_mhd的博客 155

LeetCode 1537. 最大得分 C++代码解析

LeetCode 1537. 最大得分 原题链接:最大得分1. 难点在切换点如何进行选择才能获得最大值2. 思路选择切换点获得最大值,实际上是比较切换点到下一个切换点之间的元素总和的大小。所以只要先累加每一个切换点,再在每一次切换的时候比较两个数组切换点后面那段,总和大的那一段累加,最后就会获得最大值。3. 代码注释变量定义的解释unordered_set<int> maps; ...

繁星云博客 511

廖雪峰Python教程[完整版]

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode 1537.最大得分

2,4,5,8,10], [2,4,5,8,9], [2,4,6,8,9], [2,4,6,8,10],(从 nums1 开始遍历)[4,6,8,9], [4,5,8,10], [4,5,8,9], [4,6,8,10] (从 nums2 开始遍历)输入:nums1 = [1,2,3,4,5], nums2 = [6,7,8,9,10]输入:nums1 = [2,4,5,8,10], nums2 = [4,6,8,9]输入:nums1 = [1,3,5,7,9], nums2 = [3,5,100]

tus00000的博客 503

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

leetcode1537. 最大得分(Python3、c++)

文章目录leetcode1537. 最大得分方法:双指针思路:代码:Python3:cpp:结果: leetcode1537. 最大得分 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。 从左到右遍历当前数组。 如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。 得分定义为合法路径中

weixin_43422466的博客 911

leetcode1537. 最大得分(动态规划-java)

2,4,5,8,10], [2,4,5,8,9], [2,4,6,8,9], [2,4,6,8,10],(从 nums1 开始遍历)[4,6,8,9], [4,5,8,10], [4,5,8,9], [4,6,8,10] (从 nums2 开始遍历)输入:nums1 = [1,4,5,8,9,11,19], nums2 = [2,3,4,11,12]输入:nums1 = [1,2,3,4,5], nums2 = [6,7,8,9,10]最大得分为上图中的绿色路径 [2,4,6,8,10]。

SP_1024的博客 542

力扣 1537. 最大得分

记录一下 我的思路 但是样例只过了三分之一。

m0_62238603的博客 191

千问 LeetCode 1537.最大得分 public int maxSum(int[] nums1, int[] nums2)

1. 双指针与路径和:使用两个指针 i 和 j 分别指向 nums1 和 nums2 的当前位置。它的核心思想是:利用两个指针分别遍历两个数组,在遇到公共元素时,选择之前累积和更大的那条路径,从而实现局部最优,最终得到全局最大得分。* 当 nums1[i] nums2[j] 时:同理,将 nums2[j] 加入 sum2,并将指针 j 向前移动。3. 处理剩余元素:当其中一个数组遍历完后,另一个数组剩余的元素是独有的,直接将它们累加到对应的路径和中即可。// 返回两条路径中的最大值,并取模。

m0_37843156的博客 224

LeetCode 1537. 最大得分(贪心)

题意: 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。 从左到右遍历当前数组。 如果你遇到了 nums1 和 nums2 中都存在的值, 那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。 得分定义为合法路径中不同数字的和。 请你返回所有可能合法路径中的最大得分。 由于答案可能很大,请你将它对 10^9 + 7 取余后返回。 数

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 261

LeetCode 1537. 最大得分(切片取出局部最大值)

文章目录1. 题目2. 解题 1. 题目 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。 从左到右遍历当前数组。 如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。 得分定义为合法路径中不同数字的和。 请你返回所有可能合法路径中的最大得分。 由于答案可能很大,请你将它对 10^9

Michael是个半路程序员 1386

LeetCode-Python-1537. 最大得分(数组)

你有两个 有序且数组内元素互不相同的数组nums1 和nums2。 一条合法路径定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。 从左到右遍历当前数组。 如果你遇到了 nums1和 nums2中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。 得分定义为合法路径中不同数字的和。 请你返回所有可能合法路径中的最大得分。 由于答案可能很大,请你将它对 10^9 + 7 取余后返回。 示例 1...

Keep Coding 841

LeetCode题解(1537):相互交汇的两个数组的最大得分(Python)

题目:原题链接(困难) 标签:数组、哈希表、双指针、动态规划 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(N1+N2)O(N1+N2)O(N1+N2) O(N1+N2)O(N1+N2)O(N1+N2) 132ms (97%) Ans 2 (Python) Ans 3 (Python) 解法一: class Solution: def maxSum(self, nums1: List[int], nums2: List[int])

长行 614

大佬们可不可以帮我看看究竟是哪里出了问题呢

我感觉我的思路没问题呀,但是实在看不出来为什么会得出这样的结果,大佬们能不能帮我看看究竟是哪里出了问题,不胜感激。由于答案可能很大,请你将它对 10^9 + 7 取余后返回。运行的时候三个例子都通过了,但是提交后卡在了一个例子里。我在力扣刷的一道双指针的题,题目如下。定义为合法路径中不同数字的和。且数组内元素互不相同的数组。

m0_73538304的博客 258

【面试高频题】难度 3/5,可直接构造的序列 DP 题

题目描述 这是 LeetCode 上的 「1537. 最大得分」 ,难度为 「困难」。 Tag : 「前缀和」、「构造」、「双指针」、「序列 DP」、「动态规划」 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下: 选择数组 nums1 或者 nums2 开始遍历(从下标 处开始)。从左到右遍历当前数组。如果你遇到了 nums1 和 nums2 中都存在的值,那么你可以切换

宫水三叶的刷题日记 926

【leetcode】周赛200---(1)1534. 统计三元组_3for(2)1535. 数组游戏赢家_队列(3)**1536. 网格最少交换数_3for(4)*1537. 最大得分_双指针_取余

1534、给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。 0 <= i < j < k < arr.length |arr[i] - arr[j]| <= a |arr[j] - arr[k]| <= b |arr[i] - arr[k]| <= c 其中 |x| 表示 x ...

LanXinYue98的博客 351
上一篇: LeetCode 1536. 排布二进制网格的最少交换次数
下一篇: OSI七层模型
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值