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

原创 2013年12月04日 21:46:53

方法一: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;
  }
}



无序数组中找出和为N的两个数 Two Sum

如果是有序数组,很简单。两头指针往中间相遇即可。 因此对于无序数组,排序即可。 唯一的麻烦题目要求的:要返回两个数在排序之前原数组里的序号。因此我需要在排序时也要保留原来的序列号。 这里主要是以前...
  • luckyjoy521
  • luckyjoy521
  • 2013年09月30日 14:20
  • 1883

leetcode 1 Two Sum(在无序数组中找两个数之和与目标值相等,两种方法)

Given an array of integers, return indices of the two numbers such that they add up to a specific ta...
  • yang20141109
  • yang20141109
  • 2016年05月28日 09:26
  • 917

一个无序数组中两个数之和等于给定的值sum

【问题描述】 给定一个数组,求两个数之和=给定值sum的所有组合个数。 【变形】两个数之和=sum的任意一组数 【方法一】穷举法 从数组中任意找两个数,看其和是否=sum。时间复杂度O(N^2) ...
  • suibianshen2012
  • suibianshen2012
  • 2016年07月16日 11:47
  • 839

电面:给一个数组找出和为k的两个数

如标题所述,其实LeetCode上也有道差不多的题,Two Sum返回这两个数的对应下标。 那我就按LeetCode上那道题来写吧。 先用双指针的方法嘛,不过LeetCode上面是要求返回下标,那...
  • codeTZ
  • codeTZ
  • 2016年04月10日 01:49
  • 548

【算法题】找到数组中和为固定值的两个元素

题目:编写一个函数,输入为一个int型的数组numbers和一个int型变量target,找到这个数组中和为target的两个元素,输出其index。 假设每组输入有且仅有一组输出 示例: Input...
  • u010515761
  • u010515761
  • 2015年02月03日 16:08
  • 1430

LeetCode 之 two Sum寻找两个相加之和为给定值的两个数

题目 Given an array of integers, find two numbers such thatthey add up to a specific target number....
  • linfeng24
  • linfeng24
  • 2014年07月27日 19:48
  • 1057

给定一个数组,从中查找是否存在两个数的和等于一个给定的x

基本思想:这个题其实有好几种做法,最容易想到的就是进行两重遍历,这个方法的复杂度是o(n2); public static boolean hasAB1(int[] arr,int x){ fo...
  • chen3749102
  • chen3749102
  • 2015年04月28日 15:10
  • 565

(1.5.2.11)快速寻找满足条件的两个数

前奏 希望此编程艺术系列能给各位带来的是一种方法,一种创造力,一种举一反三的能力。本章依然同第四章一样,选取比较简单的面试题,恭祝各位旅途愉快。同样,有任何问题,欢迎不吝指正。谢谢。 ...
  • fei20121106
  • fei20121106
  • 2015年04月21日 13:19
  • 559

一个有序数组中找出两个数,使得两个数的和等于X的C++实现源代码

第四题 一个有序数组a={1,3,6,.....,89,...,90318..}和一个数X,从数组中找出两个数,使得两个数的和等于X,要使时间复杂度尽量的低。 LZ的思路  第一个想...
  • brk1985
  • brk1985
  • 2014年01月25日 23:35
  • 731

《编程之美》——快速寻找符合条件的两个数

题目: 快速找出一个数组中的两个数字,使两个数字之和为一个特定的值。假设数组中至少存在一组符合要求的解。分析与解法: 【解法一】 穷举,从数组中任意选取两个数字,计算两个数字之和是否等于给定的数...
  • zengzhen_CSDN
  • zengzhen_CSDN
  • 2015年11月25日 12:15
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:无序数组寻找两个数为指定和X
举报原因:
原因补充:

(最多只允许输入30个字)