2-4数之和

题目

2,3,4数之和
非leetcode,自己酌情修改亲测可过

思路

双指针加循环

代码

def twosum(num,target):  #dict
    dict = {}
    for i,nums in enumerate(num):
        if nums in dict:
            return [dict[nums],i]
        else:
            dict[target - nums]=i
a = twosum([1,2,4,6,7,9],13)
print(a)

def twosum(num,target): #twopoints
    i = 0
    j = len(num)-1
    list = []
    while i<j:
        if num[i]+num[j]<target:
            i += 1
        elif num[i]+num[j]>target:
            j-=1
        elif num[i]+num[j]==target:
            list.append([i,j])
            i +=1
            j -=1
    return list

a = twosum([1,2,4,6,7,9],13)
print(a)

def three_sum(num,target):
    list1 = []
    for k in range(len(num)-1):
        i = k+1
        j = len(num) - 1
        while i<j:
            if num[i] + num[j]+num[k] < target:
                i += 1
            elif num[i]+num[j]+num[k]>target:
                j-=1
            elif num[i]+num[j]+num[k]==target:
                list1.append([k,i,j])
                i +=1
                j -=1
    return list
a = three_sum([1,2,4,6,7,9],14)
print(a)


def four_sum(num,target):
    num.sort()
    list1 = []
    for k in range(len(num)-1):
        for p in range(k+1,len(num)-1):
            i = p+1
            j = len(num)-1
            while i<j:
                if num[i] + num[j] + num[k] + num[p] < target:
                    i += 1
                elif num[i]+num[j]+num[k]+num[p]>target:
                    j-=1
                elif num[i]+num[j]+num[k]+num[p]==target:
                    list1.append([k,p,i,j])
                    i +=1
                    j -=1
            return list1
a = four_sum([1,2,4,6,7,9],14)
print(a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值