找出数组中两个元素相加等于10的组合

本文介绍了三种方法解决数组元素相加等于10的组合问题,包括O(N^2)的双重循环,O(NlogN)的排序一重循环,以及借助哈希表实现的O(n)时间复杂度解决方案。
摘要由CSDN通过智能技术生成

1,O(N^2) 双重循环:

def get_pair(input_list): # 简单双重循环,结果会有很多重复值。 

    for v1 in input_list: 
        for v2 in input_list:
            if v1 + v2 == 10:
                print(v1, v2)

l = [2,3,5,1,8,9,5,7,4,6,9]
get_pair(l)

-------------------------------------

def get_pair(input_list): # 为了去掉重复值,使用下标遍历list,且i < j。

    for i in range(len(input_list)):
        for j in range(len(input_list)):
            if input_list[i] + input_list[j] == 10 and i < j:
                print(input_list[i], input_list[j])

l = [2,3,5,1,8,9,5,7,4,6,9]
get_pair(l)

2,O(NlogN) 先排序再一重循环:

def get_pair(input_list):

     low = 0
     high = len(input_list) - 1

     while low < high:
         if input_list[low] + input_list[high] > 10:
             high -= 1
         elif input_list[low] + input_list[high] < 10:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值