Two Sum¶

Find a pair of elements that sums to the target value.¶

In [ ]:
def twoSum(nums: List[int], target: int) -> List[int]:
    d = dict()

    for i in range(len(nums)):
        d[target-nums[i]] = i

    for i in range(len(nums)):
        if nums[i] in d and i != d[nums[i]]:
            return([i, d[nums[i]]])
    return(None)

Number of Pair sum¶

Find number of pairs that sum to a given value¶

In [7]:
from collections import defaultdict

def pairSum(arr, k):
    d = defaultdict(int)
    
    for x in arr:
        d[k-x] += 1
    
    nb_pair_sum = 0
    for x in arr:
        if x in d:
            # if x==k-x subtract 1 as x can't sum with itself (but can with other ekements with same value)
            nb_pair_sum += d[x] - (x == k-x)

    return int(nb_pair_sum/2)