gpt4 book ai didi

java - 如何使用循环链表计算列表中的重复项

转载 作者:行者123 更新时间:2023-12-02 01:53:21 26 4
gpt4 key购买 nike

我正在努力扩展我的循环链表,并实现了一些从列表中添加和删除节点的方法。我想创建一个方法来计算列表中的重复项,该方法应该返回列表中多次出现的对象的数量。例如,列表有 [30, 30, 50, 50, 80, 90, 10, 10] 该方法应返回:重复项数为 3​​

我尝试实现以下方法,但此方法仅计算列表中的总节点,我应该添加什么来使其计算列表中的重复项。

public int countNode() {
int count = 0;

if (!isEmpty()) {
Node<E> temp = current;
Node<E> prev = current;

do {
if (prev.element == temp.element)
count++;
temp = temp.next;
prev = prev.next;
} while (temp != current);
}

return count;
}

最佳答案

简单的解决方案是使用 Java 的 HashSet 数据结构,它只允许唯一值。您需要在迭代时将每个节点的值添加到集合中。最后,集合的大小和列表的大小之间的差异将是你的答案。

这里我通过将循环链表表示为整数数组来简化示例代码:

// Your linkedlist, shown as an array
int[] arr = new int[] {30, 30, 50, 50, 80, 90, 10, 10};

// Allows only unique values
HashSet<Integer> set = new HashSet<Integer>();

// Fill your set
for(int n : arr) {
set.add(n);
}

// answer = list's length - set's length
System.out.println(arr.length - set.size());

关于java - 如何使用循环链表计算列表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69917108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com