首页主机资讯java怎么删除单链表的重复节点

java怎么删除单链表的重复节点

时间2023-12-15 15:36:03发布访客分类主机资讯浏览740
导读:可以使用两个指针来遍历单链表并删除重复节点。具体步骤如下: 定义两个指针,curr和next,初始化时都指向链表的头节点。 使用一个HashSet保存已经出现过的节点的值,初始时为空。 遍历链表,当curr不为空时执行以下步骤: 如果c...

可以使用两个指针来遍历单链表并删除重复节点。具体步骤如下:

  1. 定义两个指针,currnext,初始化时都指向链表的头节点。
  2. 使用一个HashSet保存已经出现过的节点的值,初始时为空。
  3. 遍历链表,当curr不为空时执行以下步骤:
    • 如果curr的值已经存在于HashSet中,说明当前节点是重复的,将next节点的值赋给curr节点,然后将next节点指向下一个节点。
    • 如果curr的值不存在于HashSet中,将curr的值添加到HashSet中,并将curr节点指向next节点,然后将next节点指向下一个节点。
  4. 返回链表的头节点。

下面是一个示例的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
centos创建分区的方法是什么 Linux中怎么用fdisk创建分区

游客 回复需填写必要信息