京东数据分析笔试编程题

做来做去只能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

相关推荐

AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享
评论
点赞
36
分享

创作者周榜

更多
牛客网
牛客企业服务