题解 | #删除链表的倒数第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;
}
}
查看1道真题和解析
