首页 > 代码库 > [LeetCode #1] Two Sum

[LeetCode #1] Two Sum

1. Two Sum

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;    }};

 

 

 

[LeetCode #1] Two Sum