擅长:python、mysql、java
<p>您需要下一个最大的数字,但当前选择的<code>any</code>置换数大于输入数<code>You should be the picking the minimum among such numbers</code></p>
<p>还要注意,例如对于输入<code>9</code>或<code>111</code>;没有其他排列;因此,您可能只想返回<code>next biggest-permutation or None</code></p>
<p>你可以考虑修改:</p>
<pre><code>import itertools
def next_bigger(n):
# [int(x) for x in str(n)] ex: convert 123 to array [1,2,3]
# list(set(itertools.permutations... gives you a list of permutation e.g. [[1,3,2],[3,2,1],[2,3,1],...]
# [int(''.join(map(str,x))) for x in ... converts each permuted list into a number e.g. convert [2,3,1] -> 231
# for num in sorted(...if num>n: > if 321 is bigger than 123, return it
minval = -1
for num in sorted([int(''.join(map(str,x))) for x in list(set(itertools.permutations([int(x) for x in str(n)])))]):
if num>n:
if minval == -1 or minval > num:
minval = n
return minval
</code></pre>
<p>适当的测试用例:</p>
<pre><code>nextBigger(num: 1176) //should return 1617
</code></pre>