Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. fun combinationSum(candidates: IntArray, target: Int): List<List<Int>> {
  2. val counts = IntArray(candidates.size){0}
  3. val result = mutableListOf<List<Int>>()
  4.  
  5. fun gen(i: Int, newTarget: Int){
  6. if(newTarget < 0){
  7. return
  8. }
  9. if(newTarget == 0){
  10. result.add((0 until i).flatMap {x -> (0 until counts[x]).map { candidates[x] } })
  11. return
  12. }
  13.  
  14. if(i >= candidates.size){
  15. return
  16. }
  17.  
  18. var current = newTarget
  19. counts[i] = 0
  20. gen(i+1, current)
  21. while (current > 0){
  22. counts[i] ++
  23. current -= candidates[i]
  24. gen(i+1, current)
  25. }
  26. }
  27. gen(0, target)
  28. result.reverse()
  29. return result
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement