当我使用排序函数对列表的末尾进行排序时,用于查找整数列表的下一个排列的此代码不会给出正确的答案。但是如果我使用排序函数,它给了我正确的答案。为什么会发生?请有人帮我解决这个问题。Python排序列表的一部分
def nextPermutation(self, A):
n = len(A)
if n == 1:
return A
i = n - 2
m = A[n - 1]
while i >= 0:
if A[i] < m:
j = i + 1
while j < len(A) and A[i] < A[j]:
j += 1
A[i], A[j - 1] = A[j - 1], A[i]
A[i + 1 :].sort() #Here if I use sorted it gives the correct answer
return A
else:
m = max(A[i], m)
i -= 1
A.sort()
return A
您分得一杯羹,排序,并把它扔掉。 –
尝试删除/注释掉该行。这应该与排序(A [i + 1:])具有相同的结果,因为它会创建一个你永远不会使用的副本 –
你的代码行使用'sorted()'的样子是什么? – jsfan