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

举报
神的孩子在歌唱 发表于 2021/09/30 18:02:16 2021/09/30
1.4k+ 0 0
【摘要】 前言:作者:神的孩子在歌唱大家好,我叫运智 219. 存在重复元素 II难度简单309收藏分享切换为英文接收动态反馈给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums ...

前言:

作者:神的孩子在歌唱

大家好,我叫运智

image-20210907141402848

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

转载说明:跟我说明,务必注明来源,附带本人博客连接。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。