Hash Tables: Ice Cream Parlor

#!/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)
发布了163 篇原创文章 · 获赞 90 · 访问量 6270

猜你喜欢

转载自blog.csdn.net/weixin_45405128/article/details/104304545