Leetcode 两数之和 (001)

前言

基础题 注释完善源码获取

两数之和

1.png

思考解题

这道算法题在我们coding中会经常用到,大多数时候都会两个for循环嵌套判断解决,代码如下:

public static int[] twoSum(int[] nums, int target) {
    for (int i=0; i<nums.length;i++){
        for (int k=i+1;k<nums.length;k++){
            if(nums[i]+nums[k] == target)
                return new int[]{i,k};
        }
    }
    return new int[0];
}

官方解题

其实很简单,哈希表解决,效率便提高很多。

 public static int[] twoSum2(int[] nums, int target) {
		//定义一个HashMap
        Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
        //循环遍历nums数组
        for (int i = 0; i < nums.length; ++i) {
        //目标数-数组便利下标数=目标数
            if (hashtable.containsKey(target - nums[i])) {
                return new int[]{hashtable.get(target - nums[i]), i};
            }
            //不符合则加入哈希表
            hashtable.put(nums[i], i);
        }
        return new int[0];
    }

已有 0 条评论

    欢迎您,新朋友,感谢参与互动!