#!/bin/python3
import math
import os
import random
import re
import sys
# Complete the whatFlavors function below.
#naive way
def whatFlavors0(cost, money):
n=len(cost)
#li=[]
for i in range(n-1):
if (money-cost[i]) in cost[i+1:]:
#会有相同的数字 会导致答案错误,如果删除数字也会使原来的index变化,因此需要字典来记录原来的数字和对应的index
print("{} {}".format(i+1,cost.index(money-cost[i])+1))
#more efficient way
def whatFlavors(cost, money):
# find matched number
cost_map = {}
for i, c in enumerate(cost):
k = money - c
if k in cost_map.keys(): #答案的两个数,一个在字典里面,一个刚刚循环到。避免字典的一个key对应多个value的情况
print("{} {}".format(cost_map[k]+1, i+1))
else:
cost_map[c] = i
if __name__ == '__main__':
t = int(input())
for t_itr in range(t):
money = int(input())
n = int(input())
cost = list(map(int, input().rstrip().split()))
whatFlavors(cost, money)
Hash Tables: Ice Cream Parlor
猜你喜欢
转载自blog.csdn.net/weixin_45405128/article/details/104304545
今日推荐
周排行