Java 题解 | #奶牛排队问题#

奶牛排队问题

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param weights int整型一维数组
     * @param n int整型
     * @param k int整型
     * @return bool布尔型
     */
    public boolean checkDuplicate (int[] weights, int n, int k) {
        // write code here
        HashMap<Integer, ArrayList<Integer>> t = new
        HashMap<>(); // 哈希表,用于存储重量和对应的索引列表

        for (int i = 0; i < n; i++) {
            if (!t.containsKey(weights[i])) {
                t.put(weights[i], new ArrayList<>());
            }
            t.get(weights[i]).add(i); // 将索引添加到对应的重量的索引列表中
        }

        for (ArrayList<Integer> indices : t.values()) {
            for (int i = 1; i < indices.size(); i++) {
                if (indices.get(i) - indices.get(i - 1) <= k) {
                    return true; // 存在相邻元素索引差小于等于k的情况,返回true
                }
            }
        }

        return false; // 没有找到相邻元素索引差小于等于k的情况,返回false
    }
}

使用的是Java语言。

该题考察的知识点是哈希表的使用和元素统计。

  1. 创建一个HashMap对象t用于存储每个重量对应的索引列表。
  2. 使用for循环遍历给定的重量数组weights,对于数组中的每个重量weight,首先判断t哈希表中是否包含该重量的键。如果不存在,则在t哈希表中添加新的键值对,其中键为重量,值为一个空的ArrayList对象。
  3. 获取t哈希表中指定键对应的索引列表,并将当前索引i添加到该列表中。
  4. 遍历t哈希表中的每个值(即索引列表),对每个索引列表执行以下操作:a. 使用for循环遍历索引列表,从第二个索引开始(索引i=1),依次比较当前索引与前一个索引之间的差值是否小于等于k。如果满足条件,则返回true,表示找到了相邻元素索引差小于等于k的情况。
  5. 如果遍历结束都没有找到相邻元素索引差小于等于k的情况,返回false。
全部评论

相关推荐

头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务