题解 | #两数之和#

import java.util.*;


public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        // write code here

    /**
    思路:把第一个数放入HashMap中  
    然后从第二个数开始依次判断 当前target - numbers[i]是否存在于HashMap中
    如果存在 则返回他们的下标 
    如果不存在 就将当前数字也存入HashMap中 
    时间复杂度 最差 一个在表头 一个在表尾时 是O(n)
     */

    HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();     
    int num[] = new int[2];

    map.put( numbers[0] , 0);
    for(int i = 1 ; i < numbers.length ; i++){
        if( map.containsKey(target - numbers[i])){
                num[0] = map.get(target - numbers[i]) + 1;
                num[1] = i + 1;
        }else{
            map.put( numbers[i] , i);
        }
    }

    return num;

    }
}

全部评论

相关推荐

10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务