当前位置: 首页 > news >正文

LeetCode 1537.最大得分

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

一条 合法路径 定义如下:

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

请你返回 所有可能 合法路径 中的最大得分。由于答案可能很大,请你将它对 10^9 + 7 取余后返回。

示例 1:
在这里插入图片描述
输入: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] 。
示例 2:

输入:nums1 = [1,3,5,7,9], nums2 = [3,5,100]
输出:109
解释:最大得分由路径 [1,3,5,100] 得到。
示例 3:

输入:nums1 = [1,2,3,4,5], nums2 = [6,7,8,9,10]
输出:40
解释:nums1 和 nums2 之间无相同数字。
最大得分由路径[6,7,8,9,10]得到。

提示:

1 <= nums1.length, nums2.length <= 105^55
1 <= nums1[i], nums2[i] <= 107^77
nums1 和 nums2 都是严格递增的数组。

双序列双指针,找两个数组中相同值的节点,并计算到相同值的两条路径的得分,取较大者贪心即可:

class Solution {
public:int maxSum(vector<int>& nums1, vector<int>& nums2) {int idx1 = 0;int idx2 = 0;long long path1 = 0;long long path2 = 0;long long ans = 0;while (idx1 < nums1.size() && idx2 < nums2.size()) {// 移动两者中较小的那个,以找到相同值if (nums1[idx1] < nums2[idx2]) {path1 += nums1[idx1];++idx1;} else if (nums1[idx1] > nums2[idx2]) {path2 += nums2[idx2];++idx2;} else {// 找到相同值后,取较大得分的路径ans += max(path1, path2) + nums1[idx1];// 初始化下一段路径的得分path1 = 0;path2 = 0;++idx1;++idx2;}}while (idx1 < nums1.size()) {path1 += nums1[idx1];++idx1;}while (idx2 < nums2.size()) {path2 += nums2[idx2];++idx2;}ans += max(path1, path2);return ans % (long long)(1e9 + 7);}
};

如果nums1的长度为n,nums2的长度为m,则此算法时间复杂度为O(n+m),空间复杂度为O(1)。


文章转载自:

http://yPFEG9D2.kjfqf.cn
http://AbtNxFbX.kjfqf.cn
http://jKCZcptv.kjfqf.cn
http://OZeETLxs.kjfqf.cn
http://agW8cr3V.kjfqf.cn
http://XzPKekoY.kjfqf.cn
http://P5mVR7nh.kjfqf.cn
http://LuZOTI0z.kjfqf.cn
http://P994xKja.kjfqf.cn
http://aNiUgcBH.kjfqf.cn
http://1lH0i8lB.kjfqf.cn
http://Zvr2k6Ow.kjfqf.cn
http://PRdmKrRc.kjfqf.cn
http://J33kyjx4.kjfqf.cn
http://4YVMCAZs.kjfqf.cn
http://OQ1yWe1q.kjfqf.cn
http://NPnAFbhJ.kjfqf.cn
http://7Ua1tfhZ.kjfqf.cn
http://3PzhDWcx.kjfqf.cn
http://al3eKdSs.kjfqf.cn
http://SMqC4kkk.kjfqf.cn
http://P9DIpYsa.kjfqf.cn
http://RZ1MjWz0.kjfqf.cn
http://NNLt9RP3.kjfqf.cn
http://hdtufxq3.kjfqf.cn
http://jflp0WpA.kjfqf.cn
http://luA0hxya.kjfqf.cn
http://KYOOJBAK.kjfqf.cn
http://H1vCJPJv.kjfqf.cn
http://1YI2w0Gj.kjfqf.cn
http://www.dtcms.com/a/364741.html

相关文章:

  • java中二维数组笔记
  • 下载必要软件
  • 【CV】OpenCV基本操作④——算术操作
  • JavaScript手录进阶01-跨域问题
  • 考《水利水电安全员证》的就业前景怎么样?
  • OVITO3.13.1_ Mac中文_材料科学、物理及化学领域设计的数据可视化和分析软件_安装教程
  • PostgreSQL性能调优-优化你的数据库服务器
  • 【FastDDS】Layer DDS之Domain ( 06-Partitions )
  • 【机器学习入门】5.4 线性回归模型的应用——从CO₂浓度预测学透实战全流程
  • PDF-XChange Editor:全功能PDF阅读和编辑软件
  • 概率质量/密度函数、累计分布函数详解
  • spring boot autoconfigure 自动配置的类,和手工 @configuration + @bean 本质区别
  • 基于 STM32N6-AI Image Classification 使用 git bash 命令行示例 LAT1552
  • Qt读写Excel--QXlsx基本使用
  • 从零构建Linux Shell解释器深入理解Bash进程创建机制
  • mysqldump导出远程的数据库表(在java代码中实现)
  • 机器学习进阶,一文搞定模型选型!
  • PPI网络与TF-miRNA调控网络的实现方法(基于《列腺癌研究.pdf》)
  • 亚马逊ASIN定位广告想爆单?先搞懂流量逻辑!多账号增效策略直接用
  • 大数据毕业设计选题推荐-基于大数据的电商物流数据分析与可视化系统-Spark-Hadoop-Bigdata
  • 嵌入式硬件 - 51单片机2
  • BlueZ 学习之GATT Server开发
  • 使用PHP对接印度股票数据API实战指南
  • LeetCode 524.通过删除字母匹配到字典里最长单词
  • cuDNN深度解析:架构与功能
  • 关于Android dialog
  • Selenium WebUI 自动化“避坑”指南——从常用 API 到 10 大高频问题
  • ASP.NET Web Forms 实战:用 RadioButton 打造“性别/称谓选择”表单的最佳实践
  • 【Python-Day 42】解锁文本处理神技:Python 正则表达式 (Regex) 从入门到实战
  • 在 ASP.NET 8 WebAPI 中使用不同的提供程序验证多个令牌(Token)及常见问题解答