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

协会网站建设的作用铜陵seo

协会网站建设的作用,铜陵seo,辽宁建设厅投诉网站,网站 建设 计划书最大子数组和系列题目的核心算法是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/52755.html

相关文章:

  • 电脑版和手机版网站怎么做的b2b商务平台
  • 购物网站首页怎么设计培训机构哪家最好
  • 门户网站方案微博推广方式
  • 网站建设的数据储存在哪里杭州哪家seo公司好
  • 搜狗收录网站网络推广项目代理
  • 网站开发 业务流程图网站如何提升seo排名
  • 沈阳正规制作网站公司浏览器大全
  • 公司做网站需要给百度交钱吗抚州网站seo
  • 网站设计开发方案湛江百度网站快速排名
  • wordpress微店插件下载seo网站优化方案书
  • 室内设计网站哪里可以看上海aso优化公司
  • 企业网站管理中心买域名
  • 手工艺品网站建设侧胡顺2023北京封控了
  • flash网站代做在线建站平台
  • 成都网站建设桔子科技成都网站优化排名推广
  • 购物网站平台建设小程序定制开发
  • 代做论文毕业设计网站靠谱不推广目标怎么写
  • wordpress调整页面布局长春seo外包
  • 网站建设在哪里学网站维护是什么意思
  • 给公司建立网站不可以做到的广州网站推广平台
  • 天津做家政的网站厦门网站优化公司
  • 株洲 网站建设 公司2022新闻大事件摘抄
  • 会员管理系统哪个好用seo优化方案项目策划书
  • 上海网站公安备案号竞价托管收费标准
  • 网站开发基本要求千锋教育学费
  • 网站制作需求分析天津seo实战培训
  • 做网站时导航条一般用什么样式宁波seo搜索排名优化
  • 微官网登录郑州搜索引擎优化
  • 如何自己搭建一个网站热门关键词排名查询
  • 网站使用arial字体下载三亚百度推广公司