Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.
思路:删除倒数第n个节点,因为是单链表,不知道节点总数,故先遍历,统计节点总数,算出正数第几个,然后删除即可。
算法很简单,代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { //删除倒数第n个 if(n == 0){ return head; } int nth = 0;//倒数第n个 int count = 0;//总的节点数 ListNode p = head; //统计count while(p != null){ p = p.next; count++; } //计算正数n的值,从0计算 n = count - n; if(n == 0){//如果为0,说明头结点,返回头结点下一个即可 return head.next; } p = head; //数到n-1,然后令n-1.next = n.next = n-1.next.next即可 while(nth < n - 1){ p = p.next; nth++; } p.next = p.next.next; return head; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-08-08 05:22:59