华为机试HJ94记票统计
题目:
想法:
构建一个候选人字典,统计所有候选人的票数,利用总票数和所有候选人的票数差得到无效票数,并输出结果
people_number = int(input())
people_list = input().split(" ")
ticket_number = int(input())
ticket_people = input().split(" ")
people_dict = {p: 0 for p in people_list}
count = 0
for t in ticket_people:
if t in people_dict:
people_dict[t] += 1
count += 1
for r in people_list:
print(f"{r} : {people_dict[r]}")
print(f"Invalid : {ticket_number - count}")
因为构建字典的时间复杂度是
O
(
n
)
O(n)
O(n),字典检索的时间复杂度是
O
(
1
)
O(1)
O(1),遍历字典的时间复杂度是
O
(
n
)
O(n)
O(n),因此总时间复杂度:
O
(
n
)
O(n)
O(n)。
因为需要遍历数组构建字典,所以空间复杂度:
O
(
n
)
O(n)
O(n)。