在这里插入图片描述
两种方法:

暴力枚举法

直接双重循环遍历是否存在数组中两个数相加为target

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for(int i=0;i<nums.length;i++){
        	for(int j=i+1;j<nums.length;j++){
					if(nums[i]+nums[j]==target){
						return new int[]{i,j};
					}
			}
        }
        return new int[0];
    }
}

通过HashMap中的containsKey方法来判断数组中是否存在

class Solution {
    public int[] twoSum(int[] nums, int target) {
        

        Map<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<nums.length;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];
    }
}

创建一个Map集合Key为数组中的值,Value为下标。首先循环遍历nums,判断Map中是否存在与当前下标nums[i]相加为target的数,如果存在返回该数的Value以及i。然后将其放入map集合中继续向下遍历

更多推荐