Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Find the first number greater than given, made up with the same digits
- // 0 - lowest digit in input array of digits
- func nextNumber(digits: [Int]) -> [Int]
- {
- var next = digits
- for i in 1..<next.count
- {
- if next[i] < next[i-1] // First descending order
- {
- // Find the first greater than next[i]
- var replaceIndex = i-1
- for j in 0..<i-1
- {
- if next[j] > next[i]
- {
- replaceIndex = j
- break
- }
- }
- swap(&next[i], &next[replaceIndex])
- // Reverse order of the remaining digits
- var left = i-1
- var right = 0
- while left > right
- {
- swap(&next[left--], &next[right++])
- }
- break
- }
- }
- return next
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement