1.和为定值的两个数、三个数
如果无序,先排序,排完序后,用left、right前后两个指针往中间扫(从两头夹逼),直到找到合适的数为止。
1.1和为定值的两个数
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
int *c = (int *)a;
int *d = (int *)b;
return (*c > *d) ? 1 : -1;
}
int add(int *A, int n, int sum)
{
int curSum, v1, v2;
int flag = 0;
int left = 0; /*左指针*/
int right = n-1; /*右指针*/
while (left < right)
{
curSum = A[left] + A[right];
if (curSum == sum)
{
v1 = A[left++];
v2 = A[righ