算法题笔记

import java.util.HashMap;
import java.util.Map;

public class ceshi {

/**给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]*/
public static void main(String[] args) {
    int[] nums ={2,7,11,15}; 
    int[] xin={};
    int target =9;
    //先创建一个int类型的map,用来存储,可以用来后面的匹配
        Map<Integer,Integer> map=new HashMap<>();
        //第一步,开始遍历此数组
        for(int i=0;i<nums.length;i++){
            //第二步定义一个值,因为结果值为9,9减去当前数值,存入map,当然,首次map里面是空的,所以首次结果
            //肯定先存入map,然后就可以利用map的containsKey属性来判断9减去当前值是否存在,存在证明满足公式,
            //就返回new int[]{map.get(减法得到的结果),i}
            //否则map.put(n[i],i);--(当前数组遍历到的值,当前数组位置)
            int a=target-nums[i];
            if(map.containsKey(a)){
                xin= new int[] {map.get(a),i};
            }
            map.put(nums[i],i);
        }
        for(int m=0;m<xin.length;m++){
            System.out.println(xin[m]);
        }
}
}

 

posted @ 2018-12-10 17:57  烟雨观春柳  阅读(69)  评论(0)    收藏  举报