[LeetCode][Java] Delete Duplicate From Sorted List

문제

Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.

Example 1:

Input: head = [1,1,2]
Output: [1,2]

Example 2:

Input: head = [1,1,2,3,3]
Output: [1,2,3]

제한사항

  • The number of nodes in the list is in the range [0, 300].
  • -100 \leq Node.val \leq 100
  • The list is guaranteed to be sorted in ascending order.

접근

이전 노드와 다음 노드를 변수로 저장을 했어요. 그리고,

  1. 이전 노드 값과 다음 노드 값이 같으면 이전 노드의 next에 다음 노드의 next를 저장
  2. 그렇지 않으면 이전 노드에 다음 노드를 저장
  3. 마지막에 다음 노드를 다음 노드의 next를 저장해요.
  4. 다음 노드가 null이 될 때까지 반복해요.

그리고 Leet CodeListNode 문제가 나오면 파라미터가 null인 경우에 대한 예외처리를 항상 해줘야 해요. 오랜만에 보니 몇몇 놓치고 있네요. 반성합니당 ㅠ

답안

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(null == head)
            return null;
        
        ListNode answer = head;

        ListNode prevNode = head;
        ListNode nextNode = head.next;
        while(null != nextNode){
            if(prevNode.val == nextNode.val){
                prevNode.next = nextNode.next;
            } else{
                prevNode = nextNode;
            }
            nextNode = prevNode.next;
        }
        
        return answer;
    }
}

좋은 웹페이지 즐겨찾기