Open
Description
习题
出处 LeetCode 算法第219题
给定一个整数数组和一个整数 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
思路
用一个Map保存数组项的索引,再次获取到这个数组项时进行比较
解答
JavaScript
var containsNearbyDuplicate = function (nums, k) {
var map = {};
var length = nums.length;
for (var i = 0; i < length; i++) {
var cursor = nums[i];
if (cursor in map && Math.abs(map[cursor] - i) <= k) {
return true;
} else {
map[cursor] = i;
}
}
return false;
};
Java
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<>();
int length = nums.length;
for (int i = 0; i < length; i++) {
int cursor = nums[i];
if (map.containsKey(cursor) && Math.abs(map.get(cursor) - i) >= k) {
return true;
} else {
map.put(cursor, i);
}
}
return false;
}
}
Metadata
Assignees
Labels
No labels