为了账号安全,请及时绑定邮箱和手机立即绑定

查找给定字符串的下一个更大排列的算法

查找给定字符串的下一个更大排列的算法

墨色风雨 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 关注
  • 582 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信