(Java는 오퍼를 나타냄) 링크드리스트에서 중복 노드 삭제

1. 질문 분석

정렬 된 연결 목록에 중복 노드가 있습니다. 연결 목록에서 중복 노드를 삭제하십시오. 중복 노드는 유지되지 않으며 연결 목록의 헤드 포인터가 반환됩니다. 예를 들어 연결 목록 1-> 2-> 3-> 3-> 4-> 4-> 5는 1-> 2-> 5로 처리됩니다.

이 질문의 핵심은 첫 번째 노드와 두 번째 노드가 중복 될 가능성을 고려하는 것입니다. 따라서 먼저 헤드 노드를 추가해야하며, 후속 판단에서는 사전 포인터를 추가하여 전구체를 표시하고 마지막 포인터를 추가하여 작업 포인터가 후속 검색을 담당 함을 나타낼 수 있습니다.

둘째, 코드

public class Test_14 {
    
    
    public static void main(String[] args) {
    
    
        ListNode node1 = new ListNode(1);
        ListNode node2 = new ListNode(1);
        ListNode node3 = new ListNode(1);
        ListNode node4 = new ListNode(1);
        ListNode node5 = new ListNode(1);
        ListNode node6 = new ListNode(1);
        ListNode node7 = new ListNode(1);
        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;
        node5.next = node6;
        node6.next = node7;

        ListNode result = deleteDuplication(node1);
        while (result != null) {
    
    
            System.out.println(result.val);
            result = result.next;
        }
    }

    private static ListNode deleteDuplication(ListNode pHead) {
    
    
        if (pHead == null || pHead.next == null) {
    
    
            return pHead;
        }
        //首先添加一个头结点,防止出现第一个和第二个结点就相同的情况
        ListNode head = new ListNode(0);
        head.next = pHead;
        //pre 指向当前确定不重复的结点,last 表示工作结点,负责往后搜索
        ListNode pre = head;
        ListNode last = pHead;
        while (last != null) {
    
    
            ListNode temp = last.next;
            if (temp != null && last.val == temp.val) {
    
    
                while (temp != null && last.val == temp.val) {
    
    
                    temp = temp.next;
                }
                pre.next = temp;
                last = temp;
            } else {
    
    
                pre = pre.next;
                last = temp;
            }
        }
        return head.next;
    }
}

셋, 요약

연결 목록의 삭제를 위해 일반적으로 두 개의 포인터, 하나의 전구체와 하나의 작업 포인터가 사용됩니다.

추천

출처blog.csdn.net/nanhuaibeian/article/details/108592220