打印所有和为给定值的唯一数对
原文英文,约700词,阅读约需3分钟。发表于: 。Given an array of integers, and a number ‘sum’, print all unique pairs in the array whose sum is equal to ‘sum’. Examples : `Input : arr[] = {1, 5, 7, -1, 5}, sum = 6 Output : (1, 5), (7,...
给定一个整数数组和一个数字'sum',打印出数组中所有和为'sum'的唯一对。方法一是对数组进行排序,将重复的元素放在一起。使用两个指针left和right,检查三种情况:case-1 arr[left]+arr[right]==sum,打印出有效的对并移动指针。case-2 arr[left]+arr[right]<sum,移动left指针。case-3 arr[left]+arr[right]>sum,移动right指针。方法二是使用哈希表,遍历元素,对于每个元素找到其补数,并检查是否之前已经出现过。如果之前出现过,有两种情况:case-1 元素和补数相同,检查频率。如果频率为1,则打印出这对。如果频率大于1,则跳过。case-2 如果当前元素和补数不同,检查补数是否存在于哈希表中。如果存在,表示之前已经遇到过这个补数。只有在第一次处理当前元素时才打印出这对。如果之前没有出现过,则继续搜索下一个元素。