关闭

无序数组寻找两个数为指定和X

589人阅读 评论(0) 收藏 举报
分类:

方法一:sort

bool hasArrayTwoCandidates(int A[], int arr_size, int sum)
{
    int l, r;
 
   /* Sort the elements */
    quickSort(A, 0, arr_size-1);
 
   /* Now look for the two candidates in the sorted 
       array*/
    l = 0;
    r = arr_size-1; 
    while(l < r)
    {
         if(A[l] + A[r] == sum)
              return 1; 
         else if(A[l] + A[r] < sum)
              l++;
         else // A[i] + A[j] > sum
              r--;
    }    
    return 0;
}

方法二:hash

void printPairs(int arr[], int arr_size, int sum)
{
  int i, temp;
  bool binMap[MAX] = {0}; /*initialize hash map as 0*/
 
 for(i = 0; i < arr_size; i++)
  {
    temp = sum - arr[i];
    if(temp >= 0 && binMap[temp] == 1)
    {
      printf("Pair with given sum %d is (%d, %d) \n", sum, arr[i], temp);
    }
    binMap[arr[i]] = 1;
  }
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:136512次
    • 积分:2780
    • 等级:
    • 排名:第12968名
    • 原创:134篇
    • 转载:106篇
    • 译文:1篇
    • 评论:6条