跳到主要内容

简述Java有序链表删除重复节点 ?

参考答案:

Java中的有序链表删除重复节点可以通过遍历链表并比较相邻节点的值来实现。以下是一个简单的示例代码,演示了如何在有序链表中删除重复节点:

import java.util.LinkedList;

class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
    }
}

public class RemoveDuplicates {
    public static void main(String[] args) {
        // 创建一个有序链表
        LinkedList<Integer> linkedList = new LinkedList<>();
        linkedList.add(1);
        linkedList.add(2);
        linkedList.add(2);
        linkedList.add(3);
        linkedList.add(4);
        linkedList.add(4);
        linkedList.add(4);
        linkedList.add(5);

        // 转换为链表节点
        ListNode head = new ListNode(0);
        ListNode current = head;
        for (int val : linkedList) {
            current.next = new ListNode(val);
            current = current.next;
        }

        // 删除重复节点
        current = head;
        while (current != null && current.next != null) {
            if (current.val == current.next.val) {
                // 删除重复节点
                current.next = current.next.next;
            } else {
                // 继续遍历下一个节点
                current = current.next;
            }
        }

        // 打印结果
        current = head.next;
        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }
    }
}

在上述代码中,我们首先创建了一个有序链表,并转换为链表节点。然后,我们使用两个指针currentcurrent.next来遍历链表。如果当前节点的值与下一个节点的值相同,则删除下一个节点;否则,继续遍历下一个节点。最后,我们打印删除重复节点后的链表。

注意,在删除节点时,我们直接修改了当前节点的next指针,将其指向下一个非重复节点,从而删除了重复节点。