LeetCode 1. Two Sum 解题报告

题意:

数组nums中,有一定量单元素的与是target,找来立即片独要素的职。

 

思路:

保护一个map,用数组的要素的价做key,用元素的位置做value。遍历nums,对每个num来说,如果map[target

  • num] 有值的讲话,就返回map[target –
    num]同num的职位,如果没找到的话,就拿num插入到map中,map[num] =
    index。时间复杂度O(nlogn)。

 

C++ Code:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        std::map<int, int> map;
        for(int i = 0; i < nums.size(); i++)
        {
            if(map.find(target - nums[i]) != map.end())
            {
                std::vector<int> result{map[target - nums[i]], i + 1};
                return result;
            }
            map[nums[i]] = i + 1;
        }
    }
};

Python Code:

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        map = {}
        for index,num in enumerate(nums):
            if target - num in map:
                return [map[target - num], index + 1]
            map[num] = index + 1

JS Code:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    var map = {}
    for(i = 0; i < nums.length; i++)
    {
        if(map.hasOwnProperty(target - nums[i]))
        {
            return [map[target - nums[i]], i + 1]
        }
        map[nums[i]] = i + 1
    }
};