两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
 
穷举
public class TestSum {
	public static int[] sum(String[] nums,int target) {
		int[] result = new int[2];
		List arrayList = (List) Arrays.asList(nums);
		for(int i=0;i<arrayList.size();i++) {
			int num = target-Integer.parseInt(arrayList.get(i).toString());
			for(int j=i+1;j<arrayList.size();j++) {
				if(Integer.parseInt(arrayList.get(j).toString())==num) {
					result[0] = i;
					result[1] = j;
				}
			}
		}
		
		return result;
	}
	
	public static void main(String[] args) {
		String[] nums = {"4","5","7","1","3","8","200","199"};
		int target = 200;
		int[] result = sum(nums,target);
		System.out.println(Arrays.toString(result));
	}
}

2.hashmap(网上) 

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

        for (int i = 0; i < nums.length; i++){
            int num = target - nums[i];
            // 判断num是否存在,如果已经存在,则直接返回
            if (map.get(num) != null){
                return new int[] { map.get(num), i};
            }
        }
        return null;
    }
}

3.hashmap优化

class Solution {
    public int[] twoSum(int[] nums, int target) {
        return mapSolution(nums,target);
    }
   
    private int[] mapSolution(int[] nums, int target){
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++){
            int num = target - nums[i];
            // 判断num是否存在,如果已经存在,则直接返回
            if (map.get(num) != null){
                return new int[] { map.get(num), i};
            }
            // 不存在则当前数值与序号的映射关系存入map中
            map.put(nums[i], i);
        }
        return null;
    }
}

  

 

 

posted on 2019-12-09 14:20  sunshineicy  阅读(280)  评论(0编辑  收藏  举报

导航