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 ...
前言:
作者:神的孩子在歌唱
大家好,我叫运智
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
转载说明:跟我说明,务必注明来源,附带本人博客连接。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)