Advertisement
Guest User

Untitled

a guest
Jan 25th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. // Find the first number greater than given, made up with the same digits
  2. // 0 - lowest digit in input array of digits
  3. func nextNumber(digits: [Int]) -> [Int]
  4. {
  5. var next = digits
  6. for i in 1..<next.count
  7. {
  8. if next[i] < next[i-1] // First descending order
  9. {
  10. // Find the first greater than next[i]
  11. var replaceIndex = i-1
  12. for j in 0..<i-1
  13. {
  14. if next[j] > next[i]
  15. {
  16. replaceIndex = j
  17. break
  18. }
  19. }
  20. swap(&next[i], &next[replaceIndex])
  21.  
  22. // Reverse order of the remaining digits
  23. var left = i-1
  24. var right = 0
  25. while left > right
  26. {
  27. swap(&next[left--], &next[right++])
  28. }
  29. break
  30. }
  31. }
  32. return next
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement