泰安网站建设介绍,100m的光纤可以做网站吗,广州 网站备案,wordpress 机制【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主#xff0c;题解使用C语言。#xff08;若有使用其他语言的同学也可了解题解思路#xff0c;本质上语法内容一致题解使用C语言。若有使用其他语言的同学也可了解题解思路本质上语法内容一致 【题目描述】
给你一个整数数组 nums 和一个整数 k 判断数组中是否存在两个 不同的索引 i 和 j 满足 nums[i] nums[j] 且 abs(i - j) k 。如果存在返回 true 否则返回 false 。
【示例一】
输入nums [1,2,3,1], k 3
输出true
【示例二】
输入nums [1,0,1,1], k 1
输出true
【示例三】
输入nums [1,2,3,1,2,3], k 2
输出false
【提示及数据范围】
1 nums.length 10的5次方-10的9次方 nums[i] 10的9次方0 k 10的5次方
【代码】
// 方法一哈希表class Solution {
public:bool containsNearbyDuplicate(vectorint nums, int k) {unordered_mapint,int dictionary;int length nums.size();for(int i 0;ilength;i){int num nums[i];if(dictionary.count(num) i - dictionary[num] k) return true;dictionary[num] i;}return false;}
};// 方法二滑动窗口class Solution {
public:bool containsNearbyDuplicate(vectorint nums, int k) {unordered_setint s;int length nums.size();for (int i 0; i length; i) {if (i k) {s.erase(nums[i - k - 1]);}if (s.count(nums[i])) {return true;}s.insert(nums[i]);}return false;}
};