กำหนด array และ sum หาจำนวนคู่ (i,j) ที่ i < j และ arr[i] + arr[j] == sum
ตัวอย่าง: arr = {2,8,1,5,11}, sum = 10 → Output: 2 (คู่: 2+8, 5+5? ไม่มี 5 สองตัว → 2+8, 1+9? ไม่มี → ตัวอย่างอาจมีข้อผิดพลาด)
วิธีแก้ปัญหา
O(n²) - Brute Force
วนลูปทุกคู่
O(n) - Hash Map / Two Pointers (ถ้าเรียงแล้ว)
- ใช้
unordered_mapนับความถี่ - สำหรับแต่ละ x หา
sum - x - ระวัง double counting และกรณี x == sum-x
ตัวอย่างโค้ด C++ (Hash Map)
#include <bits/stdc++.h>
using namespace std;
int Pair_Sum(int arr[], int n, int sum) {
unordered_map freq;
for(int i=0;i
Input
{2,6,1,7,9,8}, sum=9
Output
2