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);
}

浙公网安备 33010602011771号