题解 | 两数之和

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        //建Hashmap 变量名hm
        HashMap<Integer,Integer> hm = new HashMap<>();
        for(int i = 0;i < numbers.length;i++){
                    //遍历numbers,对于第i个下标,存numbers[i]作为hm的key
        //i作为hm的value
            hm.put(numbers[i],i);
        }
        for(int i = 0;i < numbers.length;i++){
//遍历numbers,对于第i个下标,判断是否存在
        //hm.get(target - numbers[i]) 不为空且不等于
        //当前下标 i
            if(hm.get(target - numbers[i]) != null
            && i != hm.get(target - numbers[i])){
                int[] nums = new int[2];
                nums[0] = i + 1;
                nums[1] = hm.get(target - numbers[i]) + 1;
                //返回下标 i + 1 和hm.get(target - numbers[i]) + 1
                return nums;
                
            }
        }
        //保证target一定可以由数组里面2个数字相加得到
        return null;
    }
}

全部评论

相关推荐

12-10 22:48
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务