无序数组寻找两个数为指定和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;
  }
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

从一堆(大量的)无序不重复数组成的数组中寻找一指定数出现的位置

题目要求:从一堆给定的无序不重复数组中寻找某一指定数在数组中出现的位置;思考方向:通过空间换时间的方法,将每个数组中的元素放入一个map容器中,将数组中的值作为key,下标作为value即可。

两个无序数组分别叫A和B,长度分别是m和n,求中位数,要求时间复杂度O(m+n),空间复杂度O(1) 。

#include using namespace std; /*函数作用:取待排序序列中low、mid、high三个位置上数据,选取他们中间的那个数据作为枢轴*/ int median(int a...

寻找无序数组中第k大的数

对于一个无序的数组,怎样找到其中第k大的数呢?下面总结几种方法。1.直接排序法使用常见的归并排序、堆排序等算法对数组进行排序,然后找到第k大的数。排序算法的时间复杂度为O(nlogn),所以算法总的时...

寻找无序互异数组中丢失的数

1.寻找无序互异数组中丢失1个数。异或操作相当于逻辑加。代码:#define LENGTH 100int nOri[LENGTH];int main(){    int x = 0;    for(i...

一个无序整数数组中找到最长连续序列(Longest Consecutive Sequence)和两个元素使得相差最小

无序数组中查找最长连续序列: 1、最笨的方法,首先将无序数组排序,然后依次遍历查找最长连续序列。时间复杂度为O(nlgn),空间复杂度为O(1)。2、首先将元素存入HashSet,然后逐个遍历原数组...

面试题:两个无序数组合并成一个有序数组

昨天面试,问了一个简单的算法题,当时快速排序的代码有点忘了,还想了一会儿。最后写的估计也还有点问题,再写一遍。         思路:先分别对两个数组进行排序(可以用快速排序),然后两路归并。 #i...

一个无序实数数组中的相邻两个元素的最大差值

题目描述: 一个无序的实数数组a[i],要求求里面大小相邻的实数的差的最大值。比如 double a[]={1,5,4,0.2,100} 这个无序的数组,相邻的数的最大差值为100-5=95. ...

无序数组O(n)时间找到排序后的两个相邻元素使得他们之间的差最大

1、基数排序,然后根据排序后的数组找到相差的最大值。public int maximumGap(int[] nums) { if (nums == null || nums.length < ...

《数组-规划》 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小

一,题目:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。       例如:        ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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