1.两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
第一种,返回数组中的一组下标,如果给的数组中,有两组的值满足要求,只返回第一组的下标。
public class Frist {
    public int[] twoSum(int[] nums, int target) {
        int index1 = 0;
        int index2 = 0;
        int[] result = new int[2];
        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 result;
        }

        return null;
    }
    public static void main(String[] args) {
        int[] nums = {2,3,6,4};
        int target = 6;
        Frist frist = new Frist();
        int[] result = frist.twoSum(nums,target);
        System.out.println(Arrays.toString(result));
    }
}
第二个中,用到的map中的key-value规则,把所满足要求的下标放入map中,结果可以得出所满足要求的所有下标值
import java.util.HashMap;
import java.util.Map;

public class TwoSum {
    public static void tosum(int[] nums, int target){
        Map<Integer, Integer> hashmap = new HashMap<>();
        for(int i=0;i<nums.length;i++){
            for(int j = i+1;j<nums.length;j++)
            {    if ( nums[i] + nums[j] == target) 
                    {
                        hashmap.put(i, j);
                    }
            }
        }
        System.out.println(hashmap);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] nums = {3,2,4,1,5};  
        int target = 6;  
        tosum(nums, target);
    }

}
原文地址:https://www.cnblogs.com/znn93/p/8946265.html