java怎么删除单链表的重复节点
导读:可以使用两个指针来遍历单链表并删除重复节点。具体步骤如下: 定义两个指针,curr和next,初始化时都指向链表的头节点。 使用一个HashSet保存已经出现过的节点的值,初始时为空。 遍历链表,当curr不为空时执行以下步骤: 如果c...
可以使用两个指针来遍历单链表并删除重复节点。具体步骤如下:
- 定义两个指针,
curr和next,初始化时都指向链表的头节点。 - 使用一个
HashSet保存已经出现过的节点的值,初始时为空。 - 遍历链表,当
curr不为空时执行以下步骤:- 如果
curr的值已经存在于HashSet中,说明当前节点是重复的,将next节点的值赋给curr节点,然后将next节点指向下一个节点。 - 如果
curr的值不存在于HashSet中,将curr的值添加到HashSet中,并将curr节点指向next节点,然后将next节点指向下一个节点。
- 如果
- 返回链表的头节点。
下面是一个示例的Java代码实现:
public ListNode deleteDuplicates(ListNode head) {
if (head == null) {
return null;
}
ListNode curr = head;
ListNode next = head.next;
SetInteger>
set = new HashSet>
();
set.add(curr.val);
while (next != null) {
if (set.contains(next.val)) {
curr.val = next.val;
curr.next = next.next;
}
else {
set.add(next.val);
curr = curr.next;
}
next = next.next;
}
return head;
}
请注意,此代码假设ListNode类的定义如下:
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: java怎么删除单链表的重复节点
本文地址: https://pptw.com/jishu/577721.html
