题意:给一个链表和数字n,移除倒数第n个数,返回head。
例子:
给定链表 1->2->3->4->5, 并且n = 2.
返回链表 1->2->3->5.
分析:题目比较简单,就是数据结构中链表的常规删除操作而已。需要注意的是,有可能删除的是头结点,因此需要声明头节点的前置节点dummyNode。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if(head == null || head.next == null) return null;
int len = 0;
ListNode dummyNode = new ListNode(0);
dummyNode.next = head;
ListNode fastNode = head;
ListNode slowNode = dummyNode;
while(fastNode != null){
len++;
fastNode = fastNode.next;
}
for(int i = 0; i < len - n; i++){
slowNode = slowNode.next;
}
slowNode.next = slowNode.next.next;
return dummyNode.next;
}
}
本文介绍了一种解决链表数据结构问题的方法,具体为如何删除链表中的倒数第N个元素。通过引入虚拟头节点并使用双指针技巧,实现了简洁高效的解决方案。
2008

被折叠的 条评论
为什么被折叠?



