LeetCode日记——【数据结构】哈希表专题

时间:2020-05-26
本文章向大家介绍LeetCode日记——【数据结构】哈希表专题,主要包括LeetCode日记——【数据结构】哈希表专题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

  题1:两数之和

难度:Easy

链接

题目描述:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

代码:

 1 class Solution {
 2     public int[] twoSum(int[] nums, int target) {
 3         HashMap <Integer,Integer> hm = new HashMap<>();
 4         for(int i=0;i<nums.length;i++){
 5             if(hm.containsKey(target-nums[i])){
 6                 return new int[]{hm.get(target-nums[i]),i};
 7             }else{
 8                 hm.put(nums[i],i);
 9             }
10         }
11         return null;       
12     }
13 }

分析:

定义一个HashMap。依次将数组中的数(key),对应的下标(value)存入该HashMap。每次都判断当前数字是否在HashMap中存在数字,与其配对之和为target。如果是,则直接返回两数下标,若否,继续往HashMap中存放键值对,然后再判断。

原文地址:https://www.cnblogs.com/augenstern/p/12964715.html