给定一个链表,删除链表的倒数第 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; }
* }
*/
//链表从头开始走到尾,每移动一步就让k值减1
1.如果n值小于0,每移动一步让n加一
2.当n==0的时候,移动停止,移动到的节点就是要删除节点的前一个节点
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if(head==null||n<1)
return head;
ListNode curr=head;
while(curr!=null){
n--;
curr=curr.next;
}
if(n==0){
head=head.next;
}
if(n<0){
curr=head;
while(++n!=0){
curr=curr.next;
}
curr.next=curr.next.next;
}
return head;
}
}