题解 | #合并表记录#
合并表记录
http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
要点
选择合适的数据结构!
map/数组/哈希表
mark一下他人回答思路
这题的重点在于查找时间和存储空间的处理即数据结构的选取。
到底是map还是数组还是哈希表可以根据key的范围以及key-value对的个数选取。
1:如果key取值范围小,那么数组是最合适的。但本题不适合,因为并没有给出key的范围,如果key很大如Integer.MAX-1,那么直接开一个这么大的数组会崩的
2:如果key的取值范围很大,但是key的个数少,那么哈希表比较合适
3:如果key的取值范围很大而且key的个数很多,那么tree是比较合适的。本题目适合tree。
my code(但是性能很差
N = int(input())
table = {}
for i in range(N):
key, value = map(int, input().split(' '))
if key in table:
table[key] += value
else:
table[key] = value
for i in sorted(table.keys()): # 按键排序,返回列表
print(i, table[i])
查看3道真题和解析