19. 刪除連結串列的倒數第N個節點-連結串列-中等難度
阿新 • • 發佈:2020-07-20
問題描述
給定一個連結串列,刪除連結串列的倒數第n個節點,並且返回連結串列的頭結點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
說明:
給定的 n保證是有效的。
進階:
你能嘗試使用一趟掃描實現嗎?
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list
解答
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * }*/ //定義一個rear節點,在head的基礎上,rear後移n位。 class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode rear = head, p = head; while(n--!=0){ if(rear.next!=null)rear = rear.next; else return head.next; } while(rear.next!=null){ p= p.next; rear = rear.next; } if(p.next!=null)p.next = p.next.next; return head; } }