一、題目大意
給你一個整數陣列 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
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/contains-duplicate-ii
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
二、解題思路
本來要刷210.存在重復元素III的,發現上一題就是II,于是就先刷這題了,這道題限制了陣列中只許有一組重復的數字,而且其坐標差不能超過k,用map來解決,定義一個map,來記錄每個數字和其坐標的映射,然后遍歷這個陣列,判斷map中是否存在當前數的坐標,如果存在判斷已存在的坐標對應的數與當前數的差是否超過k,
三、解題方法
3.1 Java實作
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i]) && (i - map.get(nums[i]) <= k)) {
return true;
} else {
map.put(nums[i], i);
}
}
return false;
}
}
四、總結小記
- 2022/10/12 刷了好多題,都忘記了怎么辦,,,總結啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/514111.html
標籤:其他
上一篇:leet Code [59. Spiral Matrix II]
下一篇:6步搭建一個飛機大戰游戲
