美文网首页
最大交换

最大交换

作者: 小幸运Q | 来源:发表于2021-06-15 22:31 被阅读0次

image.png

i从高到低遍历,尝试与右边比它最大的数当中离它最远的那个交换。

class Solution:
    def maximumSwap(self, nums: int) -> int:
        # 从头到尾交换
        begin=0
        ends=0
        num=[]
        while nums>0:
            num.append(int(nums%10))
            nums-=nums%10
            nums/=10
        num=num[::-1]
        rightstack=[]
        right = [-1 for i in range(len(num))]
        i=len(num)-1
        while i >=0:
            while len(rightstack)>0 and num[rightstack[-1]]<num[i]:
                rightstack.pop()
            if len(rightstack)>0:
                right[i]=rightstack[0]
            else:
                right[i]=-1
                # no need to swap
            rightstack.append(i)
            i-=1
        for i in range(len(num)):
            if right[i]!=-1 and num[right[i]]!=num[i]:
                num[i],num[right[i]]=num[right[i]],num[i]
                break
        n=0
        for i in range(len(num)):
            n*=10
            n+=num[i]
        return n

相关文章

  • 最大交换

    i从高到低遍历,尝试与右边比它最大的数当中离它最远的那个交换。

  • 排序

    找出最大的位置 交换

  • 670. 最大交换

    给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736输出:...

  • 670. 最大交换

    【Description】给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 ...

  • 非网管交换机和网管交换机的区别

    顾名思义,非网管交换机就是简单的交换机,又称傻瓜交换机。网管交换机,我更愿意称它是智能交换机,他们最大区别就是非网...

  • 《优势谈判实操作手册》读书心得

    全书就讲了两个字“交换”。谈判的核心是“交换”,目标是用最小的代价换取最大的利益,而且是整体利益的最大化。 ...

  • LintCode 最大的交换数

    题目给定一个非负整数,你可以交换两个数位至多一次来获得最大的合法的数。返回最大的合法的你能够获得的数。 第一版:最...

  • 1095.最大的交换

    Description给定一个非负整数,你可以交换两个数位至多一次来获得最大的合法的数。返回最大的合法的你能够获得...

  • 《前端面试题》- 编程题- 数字交换一次得到最大的数字

    输入一个数字(整数),交换两位数字,最多交换一次,输出可以得到的最大的数字,如输入:1234交换1,4后,得到4231;

  • 交换机基础知识部分

    背板带宽 是交换机处理器或接口卡和数据总线所能吞吐的最大数据量 背板带宽标志了交换机总的数据交换能力 当交换机所有...

网友评论

      本文标题:最大交换

      本文链接:https://www.haomeiwen.com/subject/qxptyltx.html