★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-dgllepcf-me.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given a positive 32-bit integer n, you need to find the smallest 32-bit integer which has exactly the same digits existing in the integer nand is greater in value than n. If no such positive 32-bit integer exists, you need to return -1.git
Example 1:github
Input: 12 Output: 21
Example 2:微信
Input: 21 Output: -1
給定一個32位正整數 n,你須要找到最小的32位整數,其與 n 中存在的位數徹底相同,而且其值大於n。若是不存在這樣的32位整數,則返回-1。spa
示例 1:code
輸入: 12 輸出: 21
示例 2:htm
輸入: 21 輸出: -1
1 class Solution { 2 func nextGreaterElement(_ n: Int) -> Int { 3 var str:String = String(n) 4 var arr:[Character] = Array(str) 5 var len:Int = str.count 6 var i:Int = len - 1 7 while(i > 0) 8 { 9 if arr[i] > arr[i - 1] {break} 10 i -= 1 11 12 } 13 if i == 0 {return -1} 14 for j in (i...(len - 1)).reversed() 15 { 16 if arr[j] > arr[i - 1] 17 { 18 arr.swapAt(j,i - 1) 19 break 20 } 21 } 22 var str2 = String(arr[0..<i]) 23 str2 += String(arr[i..<arr.count].sorted(by:<)) 24 var res:Int = Int(str2)! 25 return res > 2147483647 ? -1 : Int(res) 26 } 27 }