大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
本题考察的是在一个数组中查找是否存在两个相同的元素,同时这两个元素的索引之差不超过k的问题。
题目解答方法的文字分析
我们可以使用哈希表来解决这个问题。遍历数组中的每个元素,将元素和其对应的索引存储在哈希表中。在遍历的过程中,我们检查当前元素是否已经在哈希表中存在,如果存在,则计算当前索引与之前存储的索引之差是否不超过k。如果满足条件,说明找到了符合要求的两个奶牛,返回true。如果遍历完整个数组都没有找到符合条件的两个奶牛,则返回false。
本题解析所用的编程语言 (C++)
C++
完整且正确的编程代码
class Solution { public: bool checkDuplicate(vector<int>& weights, int n, int k) { unordered_map<int, int> indices; // 哈希表,存储每个元素和其对应的索引 for (int i = 0; i < n; ++i) { int weight = weights[i]; if (indices.count(weight) > 0 && i - indices[weight] <= k) { return true; // 找到了符合条件的两头奶牛 } indices[weight] = i; // 存储当前元素的索引 } return false; // 没有找到符合条件的两头奶牛 } };