首页 > 其他分享 >1191. K 次串联后最大子数组之和

1191. K 次串联后最大子数组之和

时间:2024-09-18 23:01:45浏览次数:8  
标签:串联 arr 1191 self maxSubArray int 数组 answer dp

题目链接 1191. K 次串联后最大子数组之和
思路 前缀和/动态规划-最大子数组和-简单变体
题解链接 dp做法正确性的详细证明(图帮助理解)
关键点 分情况讨论(\(k\ge2\)):1. 序列和小于0 2. 序列和大于等于0
时间复杂度 \(O(n)\)
空间复杂度 \(O(1)\)

代码实现:

MOD = 10 ** 9 + 7

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        answer = 0
        dp = 0
        for num in nums:
            dp = max(dp, 0) + num
            answer = max(answer, dp)
        answer %= MOD
        return answer 

    def kConcatenationMaxSum(self, arr: List[int], k: int) -> int:
        if k == 1:
            return self.maxSubArray(arr)
        sum_ = sum(arr)
        if sum_ < 0:
            return self.maxSubArray(arr + arr)
        else:
            return (self.maxSubArray(arr + arr) + (k-2) * sum_) % MOD

标签:串联,arr,1191,self,maxSubArray,int,数组,answer,dp
From: https://www.cnblogs.com/WrRan/p/18419534

相关文章

  • 1749. 任意子数组和的绝对值的最大值
    题目链接1749.任意子数组和的绝对值的最大值思路前缀和/动态规划-最大子数组和-简单变体题解链接两种方法:动态规划/前缀和(附题单!Python/Java/C++/Go/JS)关键点无时间复杂度\(O(n)\)空间复杂度\(O(1)\)代码实现(动态规划):classSolution:defmax......
  • [模板题] - 53. 最大子数组和
    题目链接53.最大子数组和思路1.前缀和2.动态规划题解链接两种方法:前缀和/动态规划(Python/Java/C++/C/Go/JS/Rust)关键点无时间复杂度\(O(n)\)空间复杂度\(O(1)\)代码实现(前缀和):classSolution:defmaxSubArray(self,nums:List[int])->......
  • Day18 二叉树part08| LeetCode 669. 修剪二叉搜索树 , 108.将有序数组转换为二叉搜索树
    669.修剪二叉搜索树669.修剪二叉搜索树classSolution{publicTreeNodetrimBST(TreeNoderoot,intlow,inthigh){if(root==null)returnnull;//处理节点值<low的情况:当前节点及其左子树的所有节点都不在范围内,继续在其右子树上修......
  • 【JavaSE】--数组的定义与使用
    文章目录1.数组的基本概念1.1什么是数组1.2数组的创建及初始化1.2.1数组的创建1.2.2数组的初始化1.3数组的使用1.3.1数组中元素访问1.3.2遍历数组2.数组是引用类型2.1初识JVM的内存分布2.2基本类型变量与引用类型变量的区别2.3再谈引用变量2.4认识null3......
  • 2024-09-18:用go语言,给定一个从 0 开始的长度为 n 的正整数数组 nums 和一个二维操作数
    2024-09-18:用go语言,给定一个从0开始的长度为n的正整数数组nums和一个二维操作数组queries,每个操作由一个下标值indexi和一个数值ki组成。开始时,数组中的所有元素都是未标记的。依次执行m次操作,每次操作的过程如下:1.如果下标indexi对应的元素还未标记,则标记这个元素......
  • C++中一般指针,指针数组,数组指针
    凤凰台上凤凰游,凤去台空江自流。吴宫花草埋幽径,晋代衣冠成古丘。三山半落青天外,二水中分白鹭洲。总为浮云能蔽日,长安不见使人愁。                            ——《登金陵凤凰台》【唐】李白 今天是中秋节,小......
  • 【每日一题】LeetCode 2332.坐上公交的最晚时间(数组、双指针、二分查找、排序)
    【每日一题】LeetCode2332.坐上公交的最晚时间(数组、双指针、二分查找、排序)题目描述给你一个下标从0开始长度为n的整数数组buses,其中buses[i]表示第i辆公交车的出发时间。同时给你一个下标从0开始长度为m的整数数组passengers,其中passengers[j]表示第......
  • 二阶数组赋值给一阶数组
    要求 请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,字符串数组中的M个字符串为:AAAABBBBBBBCC则合并后的字符串的内容应是:AAAABBBBBBBCC提示:strcat(a,b)的功能是将字符串b复制到字符串a的串尾上,成......
  • 26.删除有序数组中的重复项 Golang实现
    题目描述:给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改......
  • Vue实战指南:Vue中将一维对象数组转换为二维对象数组
    Vue实战指南:Vue中将一维对象数组转换为二维对象数组引言一维对象数组与二维对象数组的概念一维对象数组二维对象数组Vue中转换的方法示例一:使用计算属性实现转换示例二:使用methods中的函数实现转换示例三:使用Vue自定义指令实现转换示例四:使用Vuex进行状态管理实际开发......