219. 存在重复元素 II && 初识HashMap

219. 存在重复元素 II

 

 --解题思路--

  • 思路一:双指针遍历数组:固定一个指针i,移动另一个指针j,寻找满足情况的两个数
  • 思路二:构建HashMap

 

 --解题代码--

思路一:双指针遍历数组

public boolean containsNearbyDuplicate(int[] nums, int k) {
        for(int i=0;i<nums.length;++i){
            for(int j=i+1;j<nums.length;++j){
                if(nums[i]==nums[j] && (j-i) <= k)
                    return true;
            }
        }
        return false;

    }

 

 

思路二:构建HashMap

    public boolean containsNearbyDuplicate(int[] nums, int k) {
        HashMap<Integer,Integer> hashMap = new HashMap<>();
        for(int i=0;i<nums.length;++i){
            if(hashMap.containsKey(nums[i])){
                if((i-hashMap.get(nums[i]))<=k)
                    return true;
            }
            hashMap.put(nums[i],i);
        }
        return false;
    }

 

 

--写在后面的话--

初识HashMap

1.什么是Hash表?

Hash表也称为散列表,是一种根据关键字值(key - value)而直接进行访问的数据结构。(key不能重复出现)
也就是说它通过把关键码值映射到表中的一个位置来访问记录,以此来加快查找的速度。在链表、数组等数据结构中,查找某个关键字,通常要遍历整个数据结构,也就是O(n)的时间级,但是对于哈希表来说,只是O(1)的时间级。

2.什么是HashMap?

基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。

3.基本操作:

(1)创建HashMap

HashMap<类型1, 类型2> hashmap = new HashMap<类型1, 类型2>();

HashMap<String, String> hashmap= new HashMap<String, String>();

(2)添加数据

public V put(K key, V value)         将指定的值与此映射中的指定键相关联。 如果地图先前包含了该键的映射,则替换旧值。

hashmap.put("杨绛","钱钟书");
hashmap.put("林徽因","梁思成");

(3)遍历HashMap  

Set<String> keys=hashmap.keySet();
 for(String key: keys){
    String value=hashmap.get(key);
    System.out.println(key+"----"+value);
    }

  

 

 

posted @ 2020-12-10 20:16  进击的小渣渣!!  阅读(246)  评论(0)    收藏  举报