思路

由于不能使用两次相同的元素,所以我使用了hashmap的方式。首先遍历数组,如果目标值target减去数组中的值存在于map中,则直接返回目标值减去数组中的值所在的索引和当前的索引i,如果不存在则将当前的值和索引存入map。

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