首先,用一个循环来得到链表的长度
然后把删除的节点分为第一个节点和其他节点,第一个节点删除方式和其他的不一样
删除节点,关键在于找到前一个节点位置,给的是倒数的数,例如有五个,删除倒数第二个,就是删除第四个,我们要找到第三个链表长度为m,删除倒数第n个,要找到第m-n个节点
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @param n int整型 * @return ListNode类 */ public ListNode removeNthFromEnd (ListNode head, int n) { // write code here int len=0; ListNode res=new ListNode(0); ListNode temp=head; while (temp!=null){//获得链表长度 temp=temp.next; len++; } temp=head; int count=1; if (len==n){//判断是否是第一个节点 res.next=head.next; return res.next; }else { while (count!=len-n){//这里我们要找到要删除的前一个节点,才可以删除目标节点 temp=temp.next; count++; } temp.next=temp.next.next;//删除语句 } return head; } }