Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

 

 

 



#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_map>
#include 

#include 
using namespace std;

vector twoSum(vector &numbers, int target)
{
	//Key is the number and value is its index in the vector.
	unordered_map hash;
	vector result;
	for (int i = 0; i < numbers.size(); i++) 
	{
		int numberToFind = target - numbers[i];

		//if numberToFind is found in map, return them
		if (hash.find(numberToFind) != hash.end()) 
		{
			result.push_back(hash[numberToFind]);
			result.push_back(i);
			return result;
		}

		//number was not found. Put it in the map.
		hash[numbers[i]] = i;
	}
	return result;
}

int main()
{
	vectorq;
	q.push_back(2);
	q.push_back(7);
	q.push_back(11);
	q.push_back(15);

	q = twoSum(q, 17);

	for (int i = 0; i < q.size(); i++)
	{
		cout << q[i] << endl;
	}
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Eric 的頭像
    Eric

    一個小小工程師的心情抒發天地

    Eric 發表在 痞客邦 留言(0) 人氣()