Leetcode刷题100天—219. 存在重复元素 II(哈希表)—day11
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—219. 存在重复元素 II(哈希表)—day11相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
219. 存在重复元素 II
难度简单309收藏分享切换为英文接收动态反馈
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。
示例 1:
输入: nums = [1,2,3,1], k = 3
输出: true
示例 2:
输入: nums = [1,0,1,1], k = 1
输出: true
示例 3:
输入: nums = [1,2,3,1,2,3], k = 2
输出: false
package 哈希表;
import java.util.HashMap;
/*
* 6
* https://leetcode-cn.com/problems/contains-duplicate-ii/
*/
public class _219_存在重复元素II {
// 使用哈希映射,通过字典的方式,第一个数的值是1,第二个是2,以此类推,如果遇到相同的数,就将他们的值相减
public static boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap<Integer, Integer> map=new HashMap<>();
for (int i=0;i<nums.length;i++) {
// 如果键值中存在,就通过index相减判断
if (map.containsKey(nums[i])) {
// 通过map.get获取值,题目是至多为k,就是小于等于k
if (i-map.get(nums[i])<=k) {
return true;
}
}
// 将键值存入
map.put(nums[i], i);
// System.out.print(map);
}
return false;
}
public static void main(String args[]) {
int nums[]=new int[5];
nums[0]=1;
nums[1]=6;
nums[2]=2;
nums[3]=6;
nums[4]=1;
boolean c=containsNearbyDuplicate(nums,1);
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—219. 存在重复元素 II(哈希表)—day11的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—83. 删除排序链表中的重复元素(链表)—day03
Leetcode刷题100天—83. 删除排序链表中的重复元素(链表)—day03