刪除鏈表倒數第n個節點
阿新 • • 發佈:2019-04-21
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個節點