思路

创建map,键为元素,值为下标

步骤

  1. 创建HashMap,new HashMap<Integer,Integer>(),第一个Integer代表元素,第二个Integer代表下标
  2. 循环整个数组
    1. 判断语句,如果map中存在与当前元素相加为target的元素,直接返回数组
    2. 否则,将当前元素与其下标存入map中
  3. 循环结束,没有返回数据,则直接返回new int[]{0,0}
import java.util.*;


public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        // 创建map,键为元素,值为下标
        Map<Integer,Integer>map = new HashMap<>();
        for(int i=0;i<numbers.length;i++){
            // 当map中存在与当前元素相加为target的元素时,直接返回
            // 注意,这里返回的下标,从1开始
            if(map.get(target-numbers[i])!=null){
                return new int[]{map.get(target-numbers[i])+1,i+1};
            }
            // 当前轮次不匹配,将当前元素和下标存入map中
            map.put(numbers[i],i);
        }
        // 没有符合要求的,返回0结果
        return new int[]{0,0};
    }
}