存在重复元素(C++解法)

题目

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 ij ,满足 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

C++代码

cpp 复制代码
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;

/*
* 重复元素问题
* 将数组元素与其索引建立联系,放入哈希表中
* 如果满足有相同元素并且索引之差的绝对值小于等于k,返回true
*/
bool containsNearbyDuplicate(vector<int>& nums, int k) {
	unordered_map<int, int> dictionary;
	int len = nums.size();
	for (int i = 0; i < len; ++i) {
		int num = nums[i];
		if (dictionary.count(num) && i - dictionary[num] <= k) {
			return true;
		}
		dictionary[num] = 1;
	}
	return false;
}

int main() {
	vector<int> nums = { 1,0,1,1 };
	int k = 1;
	bool ans = containsNearbyDuplicate(nums, k);
	cout << boolalpha << ans << endl;
	return 0;
}

分析

重复元素问题,将数组元素与其索引建立联系,放入哈希表中,如果满足有相同元素并且索引之差的绝对值小于等于 k,返回 true。如果不满足条件继续循环,并将新的联系覆盖。

相关推荐
tan180°16 分钟前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
大千AI助手43 分钟前
DTW模版匹配:弹性对齐的时间序列相似度度量算法
人工智能·算法·机器学习·数据挖掘·模版匹配·dtw模版匹配
好好研究1 小时前
学习栈和队列的插入和删除操作
数据结构·学习
彭祥.2 小时前
Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
c++·opencv·分类
lzb_kkk2 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
YuTaoShao2 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
生态遥感监测笔记2 小时前
GEE利用已有土地利用数据选取样本点并进行分类
人工智能·算法·机器学习·分类·数据挖掘
Tony沈哲3 小时前
macOS 上为 Compose Desktop 构建跨架构图像处理 dylib:OpenCV + libraw + libheif 实践指南
opencv·算法
刘海东刘海东3 小时前
结构型智能科技的关键可行性——信息型智能向结构型智能的转变(修改提纲)
人工智能·算法·机器学习