LeetCode1两数之和(java实现)梦开始的地方~

今天我们分享的题目是LeetCode的第一题,两数之和,我们先看下题目描述。LeetCode1两数之和(java实现)梦开始的地方~_第1张图片
我们之前说过一个做题技巧,就是如果题目描述出现以下题眼:查找元素是否出现过,类似的我们首先先到的是使用哈希表,那么本道题我们应该选择哪一种数据结构呢?题目要求是返回两个元素的下标,并且该题的数据较大,因此我们考虑使用Map集合进行题解。
解题思路:我们首先开拓一个Map集合,该Map集合用于遍历传入的nums数组,如果说集合中存在目标值(目标值=target-遍历的当前元素值),如果存在目标值将数组下标进行返回。如果没有存在目标值,将该元素添加进map集合,进行下一个遍历。
具体的解题我们可以结合以下代码进行讲解:

class Solution {
    public int[] twoSum(int[] nums, int target) {
   int arr[]=new int[2];
        /**
         * 这里我们需要注意的点是map集合的key和value存的是什么
         * 这里的key存放的应该是元素,value存放的是数组的下标
         * 因为我们本道题的题目要求是返回元素所在的下标。
         */
        Map<Integer,Integer> maps=new HashMap<>();
        int i=0;
        //存放目标值
        int k=0;
        for (i=0;i<nums.length;i++){
            //计算目标值
            k=target-nums[i];
            if (maps.containsKey(k)){
                //找到了目标值进行返回
                arr[0]=i;
                arr[1]=maps.get(k);
                return arr;
            }
            //没有找到目标值,将本次遍历的元素及其下标加入到map集合
            maps.put(nums[i],i);
        }
        //循环结束没有找到目标元素返回空数组。
        return arr;

    }
}

以下是map集合函数的解释:
Map.containsKey(key)是Java中Map接口定义的方法之一,用于检查指定的键是否存在于Map中。map.containsKey方法返回了一个布尔值,表示键是否存在于Map中。根据containsKey()方法的返回值,你可以进一步根据情况来处理Map中是否包含指定的键。
Map.get(key)是Java中Map接口定义的方法之一,用于获取指定键对应的值。它接受一个键作为参数,并返回与该键关联的值。
那么本道题的讲解就到这里结束了,创作不易,希望给博主个小小的3连谢谢!

你可能感兴趣的:(java,算法,leetcode,哈希算法,数据结构,开发语言)