京东数据分析笔试编程题

做来做去只能AC 91%
思路是 每位学生拥有一个号码牌,上面写着【姓出现次数】* N + 录入列表倒序之后的索引
然后按照号码牌的数字倒序排列即符合题意
import sys
count = dict()
names = []
while True:
    line = sys.stdin.readline().strip('')
    if line == '':
        break
    names.append(line)
    x,m = line.split(' ')
    if x in count:
        count[x] += 1
    else:
        count[x] = 1
N = len(names)
if N == 0:
    sys.stdout.write(''+'\n')
else:
    names = names[::-1]
    newnames = []
    i = 0
    while i<N:
        name = names[i]
        x,m = name.split(' ')
        newnames.append([name,count[x]*N+i])
        i += 1
    newnames.sort(key=lambda x:x[1],reverse=True)
    for res in newnames:
        sys.stdout.write(str(res[0])+'\n')
时间复杂度应该是O(N),空间复杂度应该也不高吧
改来改去都只有91%,有大神看看这思路有什么问题嘛?
#京东##笔试题目##数据分析师#
全部评论
思路很清晰,那个编码的方式很6啊。就是觉得可以不用做names = names[::-1]这一步,多少应该会增大时间和空间复杂度的,直接将newnames.append([name,count[x]*N+i])改成newnames.append([name,count[x]*N+N-i])就好了
2 回复 分享
发布于 2019-08-25 10:11
原题是啥 能叙述一下🐎
点赞 回复 分享
发布于 2019-08-27 02:40
弱弱地问一句AC91%是什么意思呀?提交代码的时候能看见?
点赞 回复 分享
发布于 2019-08-26 22:14
一直是73😂😂不知道哪里有问题
点赞 回复 分享
发布于 2019-08-24 21:22
我也是一直91%,没找到yuajyin
点赞 回复 分享
发布于 2019-08-24 21:15

相关推荐

06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
36
分享

创作者周榜

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