标签:
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.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
解法一: brute force
/** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target) { int *ret = NULL; for (int i = 0; i < numsSize; i++){ for (int j = i + 1; j < numsSize; j++){ if ((nums[i] + nums[j] == target)){ ret = (int *) malloc(2 * sizeof(int)); ret[0] = i; ret[1] = j; break; } } } return ret; }
解法二: hash table
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> map; vector<int> ret; for (int i = 0; i < nums.size(); i++){ int complement = target - nums[i]; if (map.count(complement)){ ret.push_back(map[complement]); ret.push_back(i); break; } map[nums[i]] = i; } return ret; } };
标签:
原文地址:http://www.cnblogs.com/amadis/p/5899229.html