1-Two Sum

题目:

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2

  给一个整型数组,找出两个数使得他们加起来的和等于特定的目标数。

  函数twoSum要返回加起来等于目标数的两个数的索引,其中index1必须小于index2。请注意你返回的结果(index1和index2)不是以0开始的。

  你可以假定任一个输入会有一个确定的结果

  输入:numbers={2,7,11,15} , target=9

  输出:index1=1 , index2=2

思路:

1.将数组存入hash中,以数组元素值为hash键,以数组元素索引为hash值

2.相同的数组元素,存储索引值大的元素

public class Solution {
    public int[] twoSum(int[] numbers,int target) {
        int[] result=new int[2];   //最终结果
        //存储数组的的HashMap
        HashMap<Integer,Integer> m=new HashMap<Integer,Integer>();           
        for(int i=0;i<numbers.length;i++) {
            m.put(numbers[i],i);    
        }
        for(int i=0;i<numbers.length;i++) {
            int temp=target-numbers[i];
            if(m.containsKey(temp)&&i<m.get(temp)) {
                result[0]=i+1;
                result[1]=m.get(temp)+1;
            }
        }
        return result;
    }
}    
    

  

原文地址:https://www.cnblogs.com/hwu2014/p/4401870.html