Example

# All pairs

Easy
Write a function that takes in an array of integers, which can be both positive and negative, along with a target integer. The function should return all unique pairs of integers from the array that sum up to the target integer.
``````def find_pairs_with_sum(arr: List[int], target: int) -> List[Tuple[int, int]]:
pass``````

Inputs
The inputs are defined as follows:
• arr: A list of integers containing both positive and negative numbers. The array may have duplicate values.
• target: An integer that we are interested in finding pairs for.
Output
Return a list of tuples, where each tuple contains a pair of integers that sum up to the target integer.

Example Tests
• find_pairs_with_sum([3, 4, 2, 5], 7) should return [(3, 4), (2, 5)]
• find_pairs_with_sum([2, 4, 1, 5], 9) should return [(4, 5)]
• find_pairs_with_sum([7, 1, 2, 3, 4, -2], 5) should return [(1, 4), (2, 3), (7, -2)]

## Hint

Make sure that your function returns unique combinations. If the array [2, 3, 4, 6] has assigned number 5, only return (2, 3), not (2, 3), (3, 2)

``````from typing import List, Tuple, Set

def find_pairs_with_sum(arr: List[int], target: int) -> List[Tuple[int, int]]:
# Initialize an empty set to store unique pairs
result_set = set()

# Create a set for quick lookups
complementary_set = set()

# Iterate through the array to find pairs that sum up to the target
for num in arr:
complement = target - num
if complement in complementary_set:
# Sort the pair (smaller, larger) before adding to result set for uniqueness