I'm trying to solve a problem which reads as follows:个
一队Eager 的个位数(您的输入)正在等待进入一个空房间.
我每分钟允许一个数字(从左起)进入房间.
每次有新的数字进入房间,我都会在黑板上记下当前房间里所有数字的中位数.[当数字按升序排列时,中位数是中间数字.]如果有两个中位数(即两个中位数),那么我不使用平均值,而是记下两个中位数中较低的一个.
我用粉笔在现有数字的右边画上新数字,这样我的黑板号码就会变得越来越长.
当所有的数字都在房间里时,你的黑板上会出现什么数字?
考虑一下示例输入:21423814127333
- 2(最左边)被允许进入房间,因为它是唯一的数字,所以我在黑板上写了2.
- 然后允许1进入房间加入2.这两个中较小的一个被用作中间值,所以我在黑板上2的右边写下了1(我的数字现在是21)
- 4现在进入房间.1、2和4的中位数是2,所以我在黑板上加了2(我的数字现在是212)
- ...这个过程一直持续到最后3个人进入房间...所有的数字现在都在房间里,排序后是1,1,1,2,2,3,3,3,3,3,4,7,8,8.有两个中位数,但它们都是3,所以我在黑板上加上3,最后的数字是21222222222233
My current solution:个
num = input()
new = str(num[0])
whole = [num[0]]
for i in range(1, len(num)):
whole.append(num[i])
whole.sort()
new += whole[i//2]
print(new)
问题是它花的时间太长--所以它通过了6/10(隐藏的)测试用例,但超过了其他4个测试用例的时间限制.任何帮助都将不胜感激.