亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查找給定字符串的下一個更大排列的算法

查找給定字符串的下一個更大排列的算法

墨色風雨 2019-12-13 09:37:12
我想要一個有效的算法來找到給定字符串的下一個更大的排列。
查看完整描述

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]

交換這兩個索引

從樞軸開始反轉后綴


查看完整回答
反對 回復 2019-12-13
  • 3 回答
  • 0 關注
  • 638 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號