【发布时间】:2016-06-01 16:45:12
【问题描述】:
当我使用 sort 函数对列表末尾进行排序时,此用于查找整数列表的下一个排列的代码没有给出正确的答案。但是如果我使用 sorted 函数,它会给我正确的答案。为什么会这样?请有人帮我解决这个问题。
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
【问题讨论】:
-
你取一片,分类然后扔掉。
-
尝试完全删除/注释掉该行。这应该与 sorted(A[i+1:]) 具有相同的结果,因为这会创建一个您从未使用过的副本
-
使用
sorted()时你的线路是什么样子的? -
@jsfan 也许是
A[i + 1:] = sorted(A[i + 1:])?我不知道它在算法中是否有意义,但至少它有机会做一些有用的事情。 :) -
@jsfan A[i + 1 : ] = sorted(A[i + 1:])
标签: python list python-2.7 sorting