我想要一個有效的算法來找到給定字符串的下一個更大的排列。
3 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
我們按照以下步驟查找下一個詞典編排:
nums = [0,1,2,5,3,3,0]
nums = [0]*5
curr = nums[-1]
pivot = -1
for items in nums[-2::-1]:
if items >= curr:
pivot -= 1
curr = items
else:
break
if pivot == - len(nums):
print('break') # The input is already the last possible permutation
j = len(nums) - 1
while nums[j] <= nums[pivot - 1]:
j -= 1
nums[j], nums[pivot - 1] = nums[pivot - 1], nums[j]
nums[pivot:] = nums[pivot:][::-1]
> [1, 3, 0, 2, 3, 5]
因此,想法是:想法是遵循步驟-
從數組的末尾找到索引“ pivot”,使nums [i-1] <nums [i]
查找索引j,使得nums [j]> nums [pivot-1]
交換這兩個索引
從樞軸開始反轉后綴
添加回答
舉報
0/150
提交
取消