Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func splitArray(_ nums: [Int], _ m: Int) -> Int {
- var endSum = 0
- var startSum = Int.max
- for n in nums {
- startSum = min( startSum , n)
- endSum += n
- }
- while startSum + 1 < endSum{
- let mid = (startSum + endSum) / 2
- if !canCountWithSum(nums, mid, m){
- startSum = mid
- }else{
- endSum = mid
- }
- }
- if canCountWithSum(nums, endSum, m) { return endSum}
- return startSum
- }
- func canCountWithSum(_ nums: [Int], _ sum: Int, _ k: Int) -> Bool{
- var curS = 0
- var count = 1
- for n in nums{
- if curS + n > sum{
- count += 1
- curS = n
- if curS > sum || count > k {
- return false
- }
- }else{
- curS += n
- }
- }
- return true
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement