Pergunta de entrevista da empresa Amazon

Given a random array with integers, find every pair that sum up to a certain number.

Respostas da entrevista

Sigiloso

13 de mar. de 2012

// find all the pairs that sum up to a given number int* findPair(int a[], int size, int sum) { unordered_map numMap; int *pairs = new int [size*2]; for ( int i = 0; i ::value_type(a[i], i)); } for ( int j = 0; j first; numMap.erase(a[j]); printf("%d + %d = %d\n", pairs[2*j], pairs[2*j+1], sum); } } return pairs; }

2

Sigiloso

21 de mar. de 2013

Badal, There is just one little improvement if you sum=30 and you have 1,20, 10 , 15. when you found that for 20 , 10 exists. You shouldn't check for 10. This will bring down iteration size.

1

Sigiloso

21 de out. de 2012

void findPairs(int[] nums, sum){ Set numSet = new HashSet(); for(int num : nums){ numSet.add(num); } for(int num : nums){ if(numSet.contains(sum-num){ System.out.println("Pair: "+num+" - "+(sum-num)); } } }

Sigiloso

1 de mar. de 2012

public static void helper(int[] a, int m){ int tmp[] = new int[m]; for(int i=0; i

3