단일 연결 목록의 헤드 포인터와 삭제할 노드의 값이 주어지면 노드를 삭제하는 함수를 정의합니다.
삭제 된 연결 목록의 헤드 노드를 반환합니다.
예 1 :
입력 : head = [4,5,1,9], val = 5
출력 : [4,1,9]
설명 : 연결 목록에서 값이 5 인 두 번째 노드가 주어지면 함수를 호출 한 후 연결 목록은 4-> 1-> 9가됩니다.
단일 포인터 솔루션 :
class Solution {
public ListNode deleteNode(ListNode head, int val) {
if(head==null)
return null;
if(head.val==val)
return head.next;
ListNode cur=head;
while(cur.next!=null&&cur.next.val!=val){
cur=cur.next;
}
if(cur.next!=null)
cur.next=cur.next.next;
return head;
}
}
2 포인트 솔루션 :
class Solution {
public ListNode deleteNode(ListNode head, int val) {
if(head.val == val) return head.next;
ListNode pre = head, cur = head.next;
while(cur != null && cur.val != val) {
pre = cur;
cur = cur.next;
}
if(cur != null) pre.next = cur.next;
return head;
}
}