欢迎访问宙启技术站
智能推送

如何使用Java函数删除链表中的重复项?

发布时间:2023-07-01 09:29:17

删除链表中的重复项可以使用Java函数来实现。下面是一种可能的实现方法:

1. 首先,定义一个链表节点类,包含一个值和指向下一个节点的指针。例如:

public class ListNode {
    int val;
    ListNode next;
 
    ListNode(int x) {
        val = x;
        next = null;
    }
}

2. 创建一个函数来删除链表中的重复项。函数接受一个链表的头节点作为参数,并返回删除重复项后的链表的头节点。例如:

public ListNode deleteDuplicates(ListNode head) {
    if (head == null || head.next == null) {
        return head;
    }
 
    ListNode current = head;
    while (current != null && current.next != null) {
        if (current.val == current.next.val) {
            current.next = current.next.next;
        } else {
            current = current.next;
        }
    }
 
    return head;
}

3. 在主函数中创建一个链表并调用删除重复项的函数:

public static void main(String[] args) {
    // 创建示例链表:1->1->2->3->3
    ListNode head = new ListNode(1);
    ListNode node1 = new ListNode(1);
    ListNode node2 = new ListNode(2);
    ListNode node3 = new ListNode(3);
    ListNode node4 = new ListNode(3);
    head.next = node1;
    node1.next = node2;
    node2.next = node3;
    node3.next = node4;

    // 删除重复项
    ListNode newHead = deleteDuplicates(head);

    // 打印删除重复项后的链表:1->2->3
    ListNode current = newHead;
    while (current != null) {
        System.out.print(current.val + "->");
        current = current.next;
    }
    System.out.println("null");
}

这就是一个简单的使用Java函数删除链表中重复项的方法。整个过程的时间复杂度是O(n),其中n是链表的长度。