當我使用排序函數對列表的末尾進行排序時,用於查找整數列表的下一個排列的此代碼不會給出正確的答案。但是如果我使用排序函數,它給了我正確的答案。爲什麼會發生?請有人幫我解決這個問題。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