Hash Tables: Ice Cream Parlor

59 篇文章 0 订阅
27 篇文章 0 订阅
#!/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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值