牛牛有一个n个数字的序列
,现在牛牛想把这个序列分成k段连续段,牛牛想知道分出来的k个连续段的段内数字和的最小值最大可以是多少?
4,2,[1,2,1,5]
4
有3种分法[1],[2,1,5],数字和分别为1,8,最小值为1[1,2][1,5],数字和分别为3,6,最小值为3[1,2,1],[5]数字和分别为4,5,最小值为4则最小值的最大值为4
第一个参数整数n代表序列数字个数
第二个参数整数k代表分出的段数
第三个参数a 包含n个元素代表n个数字
# # 分组 # @param n int整型 (4640)# @param k int整型 # @param a int整型一维数组 (4641)# @return int整型 # class Solution: def solve(self, n, k, a): x, y = 0, sum(a) if k == 1: return y while y - x > 1: mid = (x + y) / 2 segment = 0 nowval = 0 for i in range(len(a)): nowval += a[i] if nowval >= mid: segment += 1 nowval = 0 if segment >= k: x = mid else: y = mid return round((x + y) / 2)