[Med] 670. Maximum Swap

Description

Given a non-negative integer, you could swap two digits at most once to get the maximum valued number. Return the maximum valued number you could get.

Solution

遍历三遍:
1.找累积最大值array(from left)
2.正向找第一个max_array[i]>num[i]的pos
3.交换pos和后面(倒序出现的第一个max的pos)

class Solution:
    def maximumSwap(self, num: int) -> int:
        num_old = num
        num = list(map(int,str(num)))
        n_max = [0]*len(num)
        n_max[-1] = 0 # last number should be zero
        for i in range(len(n_max)-2,-1,-1):
            if num[i+1]> n_max[i+1]:
                n_max[i]= num[i+1]
            else:
                n_max[i] = n_max[i+1]
        for i in range(len(n_max)):
            if n_max[i]>num[i]:
                break
        
        if i == len(n_max):
            return num_old
        for k in range(len(n_max)-1,-1,-1):
            if num[k] == n_max[i]:
                tmp = num[i]
                num[i]=num[k] 
                num[k] = tmp
                break
        ans = 0
        for n in num:
            ans*=10
            ans+=n
            
        return ans
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 8,143评论 0赞 10
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 10,038评论 0赞 13
  • The Inner Game of Tennis W Timothy Gallwey Jonathan Cape ...
    网事_79a3阅读 13,295评论 3赞 20
  • 事情赶早不赶晚,越早完成越好。遇到事情立刻去办,有不懂的地方 请问有经验的人。 赢就赢在别人的休息时候。一一景立哥...
    二八法则唐小达阅读 314评论 0赞 2
  • 网络初级七期 讲师四期 分享196天 昨晚是翟老师的磨课《如何与孩子沟通》,这已是我们四期班的第二轮磨课了,听完翟...
    熙琄细语雪阅读 516评论 0赞 2

友情链接更多精彩内容