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]
이전 노드와 다음 노드를 변수로 저장을 했어요. 그리고,
- 이전 노드 값과 다음 노드 값이 같으면 이전 노드의
next
에 다음 노드의next
를 저장- 그렇지 않으면 이전 노드에 다음 노드를 저장
- 마지막에 다음 노드를 다음 노드의
next
를 저장해요.- 다음 노드가
null
이 될 때까지 반복해요.
그리고 Leet Code
는 ListNode
문제가 나오면 파라미터가 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;
}
}