您的位置:首页 > 其它

410. Split Array Largest Sum

2018-12-29 20:40 49 查看

能用贪心算法!!! left是数组中的最大值,right是数组和。通过canSplit来改变left和right(此时的他们的桥梁是平均值),最终他们会收敛到一个值。

class Solution:
def splitArray(self, nums, m):
"""
:type nums: List[int]
:type m: int
:rtype: int
"""
left=max(nums)
right=sum(nums)
while left < right:
mid=left+(right-left)//2
if self.canSplit(nums,m,mid):
right = mid
else:
left=mid+1
return left
def canSplit(self,nums,m,sum1):
cnt=1
curSum=0
for i in range(len(nums)):
curSum+=nums[i]
if curSum>sum1:
curSum=nums[i]
cnt+=1
if cnt>m: return False
return True
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: