1. 程式人生 > >刪除鏈表倒數第n個節點

刪除鏈表倒數第n個節點

val lin nod clas next pre def end list

題目:

給定一個鏈表,刪除鏈表的倒數第 n 個節點,並且返回鏈表的頭結點。

示例:

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

當刪除了倒數第二個節點後,鏈表變為 1->2->3->5.
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    
public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy=new ListNode(0); dummy.next=head; ListNode first=head; int lenght=0; while(first!=null) { first=first.next; lenght++; } lenght
=lenght-n; first=dummy; while(lenght>0) { lenght--; first=first.next; } first.next=first.next.next; return dummy.next; } }

整體的思路:1)首先應該獲取這個鏈表的長度,用一個指針指向頭結點,然後遍歷直到結點為空;

2)設置一個結點指向啞結點,因為倒數第n個節點,可以通過長度減去n就獲得鏈表的第n個節點;

3)將獲取到的指針下個節點指向下下的節點。

刪除鏈表倒數第n個節點