410. Split Array Largest Sum
https://leetcode.com/problems/split-array-largest-sum/
solution
Binary search
class Solution:
def splitArray(self, nums: List[int], k: int) -> int:
left = max(nums)
right = sum(nums)
while left < right:
mid = (left + right) // 2
if self.check(nums, mid, k):
right = mid
else:
left = mid + 1
return left
def check(self, nums, mid, k):
count = 1
cur_sum = 0
for num in nums:
cur_sum += num
if cur_sum > mid:
count += 1
cur_sum = num
if count > k:
return False
return True时间复杂度:O() 空间复杂度:O()
dynamic programming
follow up
二分搜索范围: [max(nums), sum(nums)]
类似背包搜索的范围,从每一个可选中检查
378. Kth Smallest Element in a Sorted Matrix
668. Kth Smallest Number in Multiplication Table
1011. Capacity To Ship Packages Within D Days
*774. Minimize Max Distance to Gas Station
brute force
binary search
heap
Last updated