使用kotlin解决这个问题:219. 存在重复元素 II 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。 示例 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 提示: 1 <= nums.length <= 105 -109 <= nums[i] <= 109 0 <= k <= 105
时间: 2023-12-22 19:04:55 浏览: 86
以下是使用Kotlin解决这个问题的代码:
```kotlin
fun containsNearbyDuplicate(nums: IntArray, k: Int): Boolean {
val map = HashMap<Int, Int>()
for (i in nums.indices) {
val num = nums[i]
if (map.containsKey(num) && i - map[num]!! <= k) {
return true
}
map[num] = i
}
return false
}
```
这个算法使用了HashMap来记录每个元素最后一次出现的位置,以及该元素是否出现过。遍历数组时,如果当前元素已经在Map中出现过,并且当前位置和上次出现位置的距离不超过k,就说明存在重复元素,返回true。否则将该元素添加到Map中,并将其最后一次出现的位置更新为当前位置,继续遍历数组。如果遍历完整个数组仍没有找到符合条件的重复元素,就返回false。
阅读全文