Leetcode刷题100天—219. 存在重复元素 II(哈希表)—day11

Posted 神的孩子都在歌唱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—219. 存在重复元素 II(哈希表)—day11相关的知识,希望对你有一定的参考价值。

前言:

作者:神的孩子在歌唱

大家好,我叫运智

219. 存在重复元素 II

难度简单309收藏分享切换为英文接收动态反馈

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 ij,使得 nums [i] = nums [j],并且 ij 的差的 绝对值 至多为 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

Leetcode刷题100天—15. 三数之和( 排序)—day30

LeetCode刷题模版:211 - 220

LeetCode刷题模版:211 - 220

LeetCode刷题模版:211 - 220