Published:
Updated:


Solution

class ListNode {
    int val;
    ListNode next;

    public ListNode() {
    }

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

    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

public class RemoveDuplicatesFromSortedList {
    // The list is guaranteed to be sorted in ascending order.
    public static ListNode deleteDuplicates(ListNode head) {
        ListNode currentNode = head;
        // 현재 노드와 다음 노드가 null이 아닐 때
        while (currentNode != null && currentNode.next != null) {
            if (currentNode.val == currentNode.next.val) { // 같을 경우
                currentNode.next = currentNode.next.next; // 현재 노드가 다다음 노드를 가리키게 함
            } else { // 같지 않을 경우
                currentNode = currentNode.next; // 다음 노드로 이동
            }
        }
        return head; // pointer
    }
}

Leave a comment