题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
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 ListNode findLength=head; int length=0; int i=1; //链表长度 while(findLength!=null){ length++; findLength=findLength.next; } //将删除倒数的第N个节点转换成删除第N个节点 int deleteIndex=length-n+1; //如果删除头节点,直接返回头节点后面的节点 if(deleteIndex==1){ return head.next; } //找到要删除第N个节点后面的链表 ListNode deleteNode=head; while(i<deleteIndex){ deleteNode=deleteNode.next; i++; } deleteNode=deleteNode.next; //进行将要删除节点的前后两部分进行连接 ListNode tmp=head; ListNode returnNode=tmp; i=2; while(i<deleteIndex){ i++; tmp=tmp.next; } tmp.next=deleteNode; return returnNode; } }