题解 | #奶牛排队问题#

奶牛排队问题

https://www.nowcoder.com/practice/e974a33a14a344278c3a359a1ebf833e

考察的知识点:哈希;

解答方法分析:

  1. 给定的奶牛队列 weights 是一个有序列表,即按照奶牛的编号顺序排列。
  2. 判断是否存在体重相同且距离不超过 k 的两头奶牛。
  3. 定义两个指针 left 和 right,初始时分别指向队列的第一个和第 k+1 个奶牛。
  4. 对于每个针指向的奶牛,比较它们的体重,如果相等返回 true。如果不相等,则将两个指针同时向右移动位。
  5. 重复步骤 4,直到 right 指针历完整个队列。
  6. 如果步骤 5 结束后仍未找到体重相同的两头奶牛,则返回 false。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param weights int整型vector
     * @param n int整型
     * @param k int整型
     * @return bool布尔型
     */
    bool checkDuplicate(vector<int>& weights, int n, int k) {
        unordered_map<int, int> lastPosition;
        for (int i = 0; i < n; i++) {
            if (lastPosition.count(weights[i]) && i - lastPosition[weights[i]] <= k) {
                return true;
            }
            lastPosition[weights[i]] = i;
        }
        return false;
    }
};

全部评论

相关推荐

09-08 19:12
东华大学 C++
点赞 评论 收藏
分享
驼瑞驰_招募评论官版...:反正我信了,上牛客,拿offer
腾讯开奖372人在聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务