这题的做的不够聪明,精华题解的答案比较聪明,可以减少遍历的次数,优化空间占用。

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<Integer, List<Integer>> map = new HashMap();
        for(int i = 0; i < numbers.length; i++) {
            List<Integer> list = map.computeIfAbsent(numbers[i], (k) -> new ArrayList<Integer>());
            list.add(i);
        }
        int[] result = new int[2];
        for(int i = 0; i < numbers.length; i++) {
            int n = target - numbers[i];
            List<Integer> list = map.get(n);

            if (list == null) {
                continue;
            }
            if (n == numbers[i]) {
                if (list.size() > 1) {
                    result[0] = list.get(0) + 1;
                    result[1] = list.get(1) + 1;
                    break;
                } else {
                    continue;
                }
            }
            result[0] = i + 1;
            result[1] = list.get(0) + 1;
            break;
        }
        return result;
    }
}

精华答案很不错

import java.util.*;
public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        int n = numbers.length;
        int[] res = {-1, -1};
        //遍历数组
        for (int i = 0; i < n; ++i) {
            for (int j = i + 1; j < n; ++j) {
                //判断相加值是否为target
                if (numbers[i] + numbers[j] == target) {
                    res[0] = i+1;
                    res[1] = j+1;
                    //返回值
                    return res;
                }
            }
        }
        return res;
    }
}