刪除鏈表的倒數(shù)第N個節(jié)點

給定一個鏈表,刪除鏈表的倒數(shù)第 n 個節(jié)點,并且返回鏈表的頭結點。

示例:

給定一個鏈表: 1->2->3->4->5, 和 n = 2.

當刪除了倒數(shù)第二個節(jié)點后,鏈表變?yōu)?1->2->3->5.
說明:

給定的 n 保證是有效的。

 public ListNode removeNthFromEnd(ListNode head, int n) {
        if (head == null) return head;
        
        ListNode l = head; // 使用l表示要刪除的節(jié)點
        ListNode r = head;
        ListNode pre = head; //使用pre來記錄要刪除節(jié)點的上一個節(jié)點

        for (int i = 0; i < n ; i++) {
            r = r.next;
        }
        
        while (r != null) {
            r = r.next;
            pre = l;
            l = l.next;
        }

        if (l == head) return head.next; //邊界判斷,如果要刪除的是頭節(jié)點,直接返回head.next

        pre.next = l.next; //刪除l節(jié)點
    
        return head;
    }
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容