[leetcode 001]Two Sum

Question:

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].

Code:

HashMap思路,key为数组的值,value为数组下标
当target-key在map中时,条件成立,返回两个value值,注意顺序即可

Java

public class Solution {
    public int[] twoSum(int[] nums, int target) {
        
        int[] result = new int[2] ;
        HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(target-nums[i])){
                result[0]= map.get(target-nums[i]);
                result[1]= i;
            }else{
                map.put(nums[i],i);
            }
        }
        return result;
    }
}

JS

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

python

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        map = {} ;
        for i,j in enumerate(nums):
            if target-j in map:
                return [map[target-j],i]
            map[j] = i 
posted @ 2016-06-06 00:20  青山村小码农  阅读(119)  评论(0编辑  收藏  举报