219. Contains Duplicate II
Easy
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.
Example 1:
Input: nums = [1,2,3,1], k = 3
Output: true
Example 2:
Input: nums = [1,0,1,1], k = 1
Output: true
Example 3:
Input: nums = [1,2,3,1,2,3], k = 2
Output: false
题意
给定一个数组和一个整数k,判断数组中是否有重复元素,其下标之差小于等于k
思路
哈希表,键为数组中的元素,值为该元素最后一次被遍历到的下标
代码
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int index = 0;
for (int num: nums) {
if (map.containsKey(num) && index - map.get(num) <= k) {
return true;
} else {
map.put(num, index);
}
++index;
}
return false;
}
}
本文解析了LeetCode上的经典题目219.Contains Duplicate II,介绍了如何使用哈希表来判断一个整数数组中是否存在两个不同元素,其值相等且下标之差不超过给定值k。通过示例详细阐述了算法实现过程。
&spm=1001.2101.3001.5002&articleId=100049435&d=1&t=3&u=2d35e14ef3e84549974720dafce4e274)
324

被折叠的 条评论
为什么被折叠?



