网易-算法工程师-笔试

有没有人讨论一下网易今天的笔试题,1-n正整数字典序排列,根据给出的第q个正数数列,算出第q个倒数数列。
Python实现的小伙伴来指点一下呗。谢谢惹。

n = int(input())
q = [int(x) for x in input().split()]
nums = [i for i in range(1, n+1)]
output = []

#计算出是正数第几个
res = 0

for i in range(n):
    digit = q[i]
    count = 1
    for j in range(2, n-i):
        count *= j
    index = nums.index(digit)
    nums.pop(index)

    if i == n-1:
        res += (index+1) * count
    else:
        res += index * count


nums = [i for i in range(1, n+1)]

for i in range(n-1,0,-1):
    count = 1
    for j in range(2, i+1):
        count *= j
    
    digit = res // count
    res %= count 
    
    if digit == 0 and res == 0:
        break 
    elif res == 0:
        output.append(nums.pop(-digit))
    else:
        output.append(nums.pop(-digit-1)) 

output.extend(nums)

output = [str(x) for x in output]

print(' '.join(output))

#网易##笔试题目##算法工程师#
全部评论
这个,每一位加起来都等于n+1啊……
点赞 回复 分享
发布于 2019-08-03 23:38
谢谢大家的回复。。做的时候我也想到了,但感觉太简单了有种抄近道的恐慌。看来还是经验不足。。
点赞 回复 分享
发布于 2019-08-03 23:43

相关推荐

07-01 17:14
中北大学 Java
兄弟们是真是假
牛客46374834...:我在boss上投java岗从来没成功过
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
点赞
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务