当前位置:网站首页>leetcode-2321. 拼接数组的最大分数(差分+枚举)
leetcode-2321. 拼接数组的最大分数(差分+枚举)
2022-07-31 05:10:00 【lin钟一】

题目链接:https://leetcode.cn/problems/maximum-score-of-spliced-array/
思路
直接想法
- 这题表面是如何找子数组区间[Left:Right]使得对换之后,使其中一个的数组和最大。
- 但其实是在找两个数组之间[Left:Right]区间最大差值,差值我们自然而然的就可以想到差分,但是我们这里求的差分数组并不是两个数组前后元素的差值,而是两个数组同一下标的元素差值,这样我们只要找这段差分区间和的最大值就行了
算法
- 写一个solve方法,分别对两个数组进行找差分区间和最大值对比,求数组和最大值。
1. sum用来求数组之和
2. s 是找差分区间和,若差值 < 0 则重新找下一个差分区间
3. maxSum 是找差分区间和最大值
代码示例
GO代码
func max(a, b int) int {
if a < b {
return b
}
return a
}
func solve(nums1, nums2 []int) int {
sum, maxSum, s := 0, 0, 0
for i := range nums1 {
//求数组之和
sum += nums1[i]
//求差分区间之和
s = max(s+nums2[i]-nums1[i], 0)
//求差分区间之和最大值
maxSum = max(maxSum, s)
}
return sum + maxSum
}
func maximumsSplicedArray(nums1, nums2 []int) int {
return max(solve(nums1, nums2), solve(nums2, nums1))
}

C++代码
class Solution {
public:
int solve(vector<int>& nums1, vector<int>& nums2){
int sum = 0, s = 0, maxSum = 0,n = nums1.size();
for(int i=0; i < n; i++){
sum += nums1[i];
s = max(s + nums2[i] - nums1[i], 0);
maxSum = max(maxSum, s);
}
return sum + maxSum;
}
int maximumsSplicedArray(vector<int>& nums1, vector<int>& nums2) {
return max(solve(nums1, nums2), solve(nums2, nums1));
}
};
复杂度分析
- 时间复杂度:O(n) 其中n表示数组长度,遍历数组所需要的时间为O(n)
- 空间复杂度:O(1) 没有额外的空间申请
边栏推荐
猜你喜欢
随机推荐
C语言实验二 数据类型、运算符和表达式
面试Redis 高可靠性|主从模式、哨兵模式、Cluster集群模式
uni-app进阶之认证【day12】
Simple command of mysql
11 【定位】
04 【计算属性 侦听属性】
【MySQL8入门到精通】基础篇- Linux系统静默安装MySQL,跨版本升级
Kubernetes加入集群的TOKEN值过期
Flink sink ES 写入 ES(带密码)
踏上编程之路,你必须要干的几件事
tf.keras.utils.get_file()
联盟链的真实场景在哪里
基于flask的三方登陆的流程
Distributed Transactions - Introduction to Distributed Transactions, Distributed Transaction Framework Seata (AT Mode, Tcc Mode, Tcc Vs AT), Distributed Transactions - MQ
gin框架学习-Gin框架和Gorm框架搭建一个简单的API微服务
剑指offer基础版 ---- 第26天
tf.keras.utils.get_file()
mysql5.7.35安装配置教程【超级详细安装教程】
字符串的新增方法
Swordsman Offer Special Assault Edition --- Day 3




![[Introduction to MySQL 8 to Mastery] Basics - silent installation of MySQL on Linux system, cross-version upgrade](/img/af/7a2cdcc6535c04c508c9ddf9ee0cb2.png)




