题解 | #奶牛排队问题#

奶牛排队问题

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

一、知识点:

HashMap

二、文字分析:

哈希表来解决。我们可以遍历整个奶牛队列,对于每头奶牛,检查是否存在与其体重相同且在队列中的距离不超过k的奶牛。为了判断距离是否超过k,我们可以使用一个双端队列来保存最近的k个奶牛的位置。如果存在符合条件的奶牛,则返回true;否则,返回false。

三、编程语言:

java

四、正确代码:

import java.util.*;

public class Solution {
    public boolean checkDuplicate(int[] weights, int n, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        Deque<Integer> deque = new LinkedList<>();

        for (int i = 0; i < n; i++) {
            if (map.containsKey(weights[i])) {
                int distance = i - map.get(weights[i]);
                if (distance <= k) {
                    return true;
                }
            }
            map.put(weights[i], i);

            if (!deque.isEmpty() && i - deque.peekFirst() >= k) {
                deque.pollFirst();
            }
            deque.offerLast(i);
        }

        return false;
    }
}

全部评论

相关推荐

投递小鹏汽车等公司7个岗位
点赞 评论 收藏
分享
07-15 12:24
重庆大学 运营
坏消息:和好工作擦肩而过
给点吧求求了:怎么可能因为差几秒,估计就是简历更好看婉拒了
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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