Advertisement
HXXXXJ

410. Split Array Largest Sum

Apr 13th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.97 KB | None | 0 0
  1. func splitArray(_ nums: [Int], _ m: Int) -> Int {
  2.         var endSum = 0
  3.         var startSum = Int.max
  4.         for n in nums {
  5.             startSum = min( startSum , n)
  6.             endSum += n
  7.         }
  8.  
  9.         while startSum + 1 < endSum{
  10.             let mid = (startSum + endSum) / 2
  11.             if !canCountWithSum(nums, mid, m){
  12.                 startSum = mid
  13.             }else{
  14.                 endSum = mid
  15.             }
  16.         }
  17.         if canCountWithSum(nums, endSum, m) { return endSum}
  18.         return startSum
  19.     }
  20.    
  21.    
  22.    
  23.     func canCountWithSum(_ nums: [Int], _ sum: Int, _ k: Int) -> Bool{
  24.         var curS = 0
  25.         var count = 1
  26.         for n in nums{
  27.             if curS + n > sum{
  28.                 count += 1
  29.                 curS = n
  30.                 if curS > sum || count > k {
  31.                     return false
  32.                 }
  33.             }else{
  34.                 curS += n
  35.             }
  36.         }
  37.         return true
  38.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement