sword는 offer.18 링크드리스트의 노드를 삭제하기위한 단일 및 이중 포인터 (java)

단일 연결 목록의 헤드 포인터와 삭제할 노드의 값이 주어지면 노드를 삭제하는 함수를 정의합니다.

삭제 된 연결 목록의 헤드 노드를 반환합니다.

예 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;
    }
}


 

추천

출처blog.csdn.net/qq_44624536/article/details/115213107