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

沂南县建设局网站百度信息流广告平台

沂南县建设局网站,百度信息流广告平台,官网网站建设需求,有限责任公司公司章程范本最大子数组和系列题目的核心算法是Kadane算法:定义状态f[i]表示以a[i]结尾的最大子数组和,不和i左边拼起来就是f[i] a[i],和i左边拼起来就是f[i] f[i-1] a[i],取最大值就得到了状态转移方程f[i] max(f[i-1], 0) a[i]&#xf…

最大子数组和系列题目的核心算法是Kadane算法:定义状态f[i]表示以a[i]结尾的最大子数组和,不和i左边拼起来就是f[i] = a[i],和i左边拼起来就是f[i] = f[i-1] + a[i],取最大值就得到了状态转移方程f[i] = max(f[i-1], 0) + a[i],答案为max(f)

子数组非空

53. 最大子数组和 [Medium]
1186. 删除一次得到子数组最大和 [Medium]
918. 环形子数组的最大和 [Medium]

# 53. 最大子数组和
class Solution:def maxSubArray(self, nums: List[int]) -> int:n=len(nums)# 子数组非空f=[nums[0]]+[0]*(n-1)# 子数组可以为空:# f=[0]*nfor i in range(1,n):f[i]=max(f[i-1],0)+nums[i]return max(f)

最大子数组和系列主要有两类,子数组可以为空和子数组非空。如果子数组非空,那么f数组初始化为f=[nums[0]]+[0]*(n-1),如果优化空间,不定义数组,那么ans必须初始化为-inf

class Solution:def maxSubArray(self, nums: List[int]) -> int:# 子数组非空ans, f = -inf, 0# 子数组可以为空# ans = f = 0for x in nums:f = max(f, 0) + xans = max(ans, f)return ans
# 1186. 删除一次得到子数组最大和
class Solution:def maximumSum(self, arr: List[int]) -> int:f=[[-inf,-inf]]+[[0,0] for _ in arr]for i,x in enumerate(arr):f[i+1][0]=max(f[i][0],0)+xf[i+1][1]=max(f[i][1]+x,f[i][0])return max(max(r) for r in f)

这题涉及到枚举每个元素时删或不删,有点类似状态机DP。同样地,子数组非空,所以f初始状态为-inf

# 918. 环形子数组的最大和
class Solution:def maxSubarraySumCircular(self, nums: List[int]) -> int:fmax,ansMax,fmin,ansMin=0,-inf,0,0for x in nums:fmax=max(fmax,0)+xansMax=max(ansMax,fmax)fmin=min(fmin,0)+xansMin=min(ansMin,fmin)# ansMax<0表示nums中元素全负,返回负值最小的return max(ansMax,sum(nums)-ansMin) if ansMax>0 else ansMax

这题要同时求求最大子数组和和最小子数组和。

子数组可以为空

2606. 找到最大开销的子字符串 [Medium]
1749. 任意子数组和的绝对值的最大值 [Medium]
1191. K 次串联后最大子数组之和 [Medium]
2321. 拼接数组的最大分数 [Hard]

# 2606. 找到最大开销的子字符串
class Solution:def maximumCostSubstring(self, s: str, chars: str, vals: List[int]) -> int:value_dict = dict(zip(chars, vals))# 子数组可以为空f=[0]*(len(s)+1)for i,c in enumerate(s):f[i+1] = max(f[i],0) + value_dict.get(c, ord(c)-ord('a')+1)# 优化空间# ans = f = 0# for c in enumerate(s):#     f = max(f,0) + value_dict.get(c, ord(c)-ord('a')+1)	#     ans = max(ans, f)	# return ansreturn max(f)

这道题就是子数组可以为空,所以f数组初始化为 f = [0]*(len(s)+1)

# 1749. 任意子数组和的绝对值的最大值
class Solution:def maxAbsoluteSum(self, nums: List[int]) -> int:ans = fmax = fmin = 0for x in nums:fmax = max(fmax, 0) + xfmin = min(fmin, 0) + xans = max(ans, fmax, -fmin)return ans

这题是求绝对值的最大值,所以要算最大子数组和和最小子数组和,最后取两者的最大值。

# 1191. K 次串联后最大子数组之和
MOD=10**9+7
class Solution:# kadane算法, 用于求解最大子数组和def kadane(self,nums:List[int])->int:ans=f=0for x in nums:f=max(f,0)+xans=max(ans,f)return ansdef kConcatenationMaxSum(self, arr: List[int], k: int) -> int:if k==1:return self.kadane(arr)twoMax=self.kadane(arr*2)if sum(arr)<0:return twoMax%MODelse:return (twoMax+sum(arr)*(k-2))%MOD

子数组可以为空,ans初始化为0

# 2321. 拼接数组的最大分数
class Solution:def kadane(self,nums1,nums2):ans=f=0for x,y in zip(nums1,nums2):f=max(f,0)+y-xans=max(ans,f)return sum(nums1)+ansdef maximumsSplicedArray(self, nums1: List[int], nums2: List[int]) -> int:return max(self.kadane(nums1,nums2),self.kadane(nums2,nums1))

拓展 - 乘积最大子数组

152. 乘积最大子数组 [Medium]
2708. 一个小组的最大实力值 [Medium]

# 152. 乘积最大子数组
class Solution:def maxProduct(self, nums: List[int]) -> int:ans=-inffmax=fmin=1for x in nums:#fmin=min(fmax*x,fmin*x,x)#fmax和fmin必须写在同一表达式同时更新,分开先后更新的话,后更新的就会使用新的值,导致错误fmax,fmin=max(fmax*x,fmin*x,x),min(fmax*x,fmin*x,x)ans=max(ans,fmax)return ans

乘积也是需要求最大乘积子数组和最小乘积子数组,因为负负得正,最小乘积子数组也可能变成最大乘积子数组。

# 2708. 一个小组的最大实力值
class Solution:def maxStrength(self, nums: List[int]) -> int:# 子数组非空mx=mn=nums[0]for x in nums[1:]:mx,mn=max(mx,mx*x,mn*x,x),min(mn,mx*x,mn*x,x)return mx


以上整理自leetcode灵神题单:动态规划之 1.3 最大子数组和

http://www.dtcms.com/wzjs/304891.html

相关文章:

  • 中山网站建设外包品牌策略包括哪些内容
  • 泉州市住房和乡村建设网站爱站网注册人查询
  • 重庆建筑建设委员会官方网站全网营销是什么意思
  • 深圳企业学校网站建设seo网络推广公司排名
  • 网页设计与网站建设区别吸引人的软文标题例子
  • seo诊断服务武汉seo网络优化公司
  • 腾讯邮箱企业邮箱注册深圳谷歌seo公司
  • dux5.0 WordPress谷歌搜索优化
  • 企业网站建设的报价淘宝数据分析
  • 个人用服务器seo网站推广工作内容
  • 潜江做网站免费制作小程序平台
  • wordpress获取专题名seo网站优化服务合同
  • 天津最好的网站建设5000人朋友圈推广多少钱
  • 关于网站建设的管理实践报告宁波seo网络推广定制
  • 视频素材网站怎么建百度广告竞价
  • 网站建设的提升seo设置是什么
  • wordpress 主机要求黑帽seo排名技术
  • 广州市建委官方网站国内建站平台
  • 免费注册个人网站官网seo网络营销的技术
  • 任意的关键词或网站做引流兰蔻搜索引擎营销案例
  • 网站怎么添加在线客服企业网站推广策划
  • 专做实习生招聘的网站百度搜索指数排行
  • 独立商城系统网站建设等服务肇庆seo优化
  • 网站banner怎么设计网站关键词推广价格
  • 在局域网内访问本机的asp网站2023年4 5月份疫情结束吗
  • 做网站需要钱吗360推广登陆
  • 商城版免费网站制作广告大全
  • 小型企业网站设计深圳网络营销怎么推广
  • 网站名称注册程序短视频运营
  • 有域名就可以做网站吗淘宝指数查询官网