[leetcode 410]Split Array Largest Sum
2017-05-17 11:23
483 查看
题目理解:给一个非负数组,和划分数组的个数m
问题:返回划分的m个子数组中和最大的哪个和,因为划分m个子数组的方法有很多种,假设有k种划分m个子数组的方法,所以就有k个子数组最大和的值,求出这k个值中最小的哪个值返回来。
解决:二分查找
(代码参考https://discuss.leetcode.com/topic/62139/python-solution-dp-and-binary-search/2)
class Solution(object):
def splitArray(self, nums, m):
"""
:type nums: List[int]
:type m: int
:rtype: int
"""
def valid(mid):
count = 0
current = 0
for n in nums:
current += n
if current>mid:
count += 1
if count>=m:
return False
current = n
return True
l = max(nums)
r = sum(nums)
while l<r:
mid = l+(r-l)/2
if valid(mid):
r = mid
else:
l = mid+1
return l
问题:返回划分的m个子数组中和最大的哪个和,因为划分m个子数组的方法有很多种,假设有k种划分m个子数组的方法,所以就有k个子数组最大和的值,求出这k个值中最小的哪个值返回来。
解决:二分查找
(代码参考https://discuss.leetcode.com/topic/62139/python-solution-dp-and-binary-search/2)
class Solution(object):
def splitArray(self, nums, m):
"""
:type nums: List[int]
:type m: int
:rtype: int
"""
def valid(mid):
count = 0
current = 0
for n in nums:
current += n
if current>mid:
count += 1
if count>=m:
return False
current = n
return True
l = max(nums)
r = sum(nums)
while l<r:
mid = l+(r-l)/2
if valid(mid):
r = mid
else:
l = mid+1
return l
相关文章推荐
- [LeetCode 410] Split Array Largest Sum (二分答案/最大值最小化)
- leetcode 410 Split Array Largest Sum
- leetcode 410 split-array-largest-sum
- Leetcode (410) Split Array Largest Sum
- LeetCode 410: Split Array Largest Sum 解题与思考
- LeetCode 410 - Split Array Largest Sum
- LeetCode【410】 Split Array Largest Sum
- leetcode(410):Split Array Largest Sum
- 410. Split Array Largest Sum
- leetCode_Split Array Largest Sum
- LeetCode 410. Split Array Largest Sum
- 2017.10.19 LeetCode 二分 -> 69. Sqrt(x) -> 410. Split Array Largest Sum
- leetcode题解-410. Split Array Largest Sum
- leetcode-410. Split Array Largest Sum
- LeetCode: Split Array Largest Sum
- [LeetCode] Split Array Largest Sum 分割数组的最大值
- LeetCode 410. Split Array Largest Sum
- 【Leetcode】410. Split Array Largest Sum
- Leetcode: Split Array Largest Sum
- LeetCode #410: Split Array Largest Sum