题目是纯英文的,就不粘贴了。大致意思是:
输入
3 (输入的个数)
1 1 (1:1,也就是1)
3 4 (3:4,也就是3,4)
6 9 (6:9,也就是6,7,8,9)
输出
1 1 (1、1出现的次数)
3 1 (3、3出现的次数)
4 1 ……
6 1
7 1
8 1
9 1
输入
5
1 10
2 9
3 8
4 7
5 5
输出
1 1
2 2
3 3
4 4
5 5
6 4
7 4
8 3
9 2
10 1
from collections import Counter
len_as = input()
len_a = int(len_as)
all_data = []
arr_b = []
for _ in range(len_a):
str_b = input()
arr_b = str_b.split(' ')
for i in range(int(arr_b[0]), int(arr_b[1]) + 1):
if int(arr_b[0]) == int(arr_b[1]):
all_data.append(int(arr_b[0]))
break
all_data.append(i)
nummap = Counter(all_data)
# print(nummap)
uniq_data = list(set(all_data))
uniq_data.sort()
for d in uniq_data:
print("%s %s" % (d, nummap.get(d)))
测试用的哪些数字我无法查看
所有时间降低到2秒以下
你尝试一下将时间复杂度降下来试试,不调用第三方库操作,双重循环改为单循环
len_as = input()
str_b = []
nummap = {}
for i in range(int(len_as)):
str_b.append(input().split(' '))
for i in str_b:
for j in range(int(i[0]),int(i[1])+1):
if j in nummap:
nummap[j] += 1
else:
nummap[j] = 1
nummap=sorted(nummap.items(),key=lambda x:x[0])
for k,v in nummap:
print(f"{k} {v}")
已完成,望采纳
len_as = input()
len_a = int(len_as)
summap = {}
for i in range(len_a):
str_b = input()
arr_b = str_b.split(' ')
for i in range(int(arr_b[0]), int(arr_b[1]) + 1):
if i in summap.keys():
summap[i] += 1
else:
summap[i] = 1
summap2 = sorted(summap.keys())
for i in summap2:
print("%s %s" %(i, summap.get(i)))
len_as = input(">>>")
len_a = int(len_as)
all_data = []
arr_b = []
nummap = {}
for _ in range(len_a):
str_b = input(">>>")
arr_b = str_b.split(' ')
for i in range(int(arr_b[0]), int(arr_b[1]) + 1):
nummap[i] = nummap.get(i, 0) + 1
uniq_data = sorted(nummap.items(), key=lambda x: x[0])
for k,v in uniq_data:
print("%s %s" % (k, v))