大家好,我是开车的阿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; // 没有找到符合条件的两头奶牛
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!