字节面试题 小于n的最大数

原题描述

def getMaxNumbers(nums,n):
    b=n
    res=[]
    l=[]
    while (n//10)!=0:
        res.insert(0,n%10)
        n//=10
    res.insert(0,n)
    nums.sort()
    flag=0
    if n<min(nums):
        return None
    if res[0]<nums[0]:
        s=[]
        for i in range(len(res)-1):
            s.append(str(max(nums)))
        return int(''.join(s))
    for i in res:
        if i in nums and flag==0:
            l.append(i)
        else:
            if flag==1:
                l.append(max(nums))
                continue
            if i<min(nums):
                if nums.index(l[-1])==0:
                    l.pop()
                    l.append(max(nums))
                    flag=1
                else:
                    l.append(nums[nums.index(l.pop())-1])
                    l.append(max(nums))
                    flag=1
            if i>min(nums):
                l.append(sorted(nums,key=lambda x:abs(x-i))[0])
                flag=1
    l1=map(str,l)
    a=int(''.join(l1))
    if a==b:
        y=-1
        while  abs(y)<=len(l):
            if nums.index(l[y])==0:
                l[y]=max(nums)
                y-=1
            else:
                l[y]=nums[nums.index(l[y])-1]
                break
        if abs(y)-1==len(l):
            l.pop(0)
        return int(''.join(map(str,l)))
    else:
        if len(l)<len(res):
            l[0]=max(nums)
            return (int(''.join(map(str,l))))
        return (a)
            
            


个人写的菜鸟级的面向用例编程




全部评论
这个是典型的DFS题吧
点赞
送花
回复 分享
发布于 2022-06-25 13:49
字节经典题目,百度一搜很多题解,直接dfs时间复杂度会高一些
点赞
送花
回复 分享
发布于 2022-08-18 11:41 北京
国泰君安
校招火热招聘中
官网直投

相关推荐

头像
04-29 10:53
已编辑
东北大学 自动化类
点赞 评论 收藏
分享
3 3 评论
分享
牛客网
牛客企业服务