【LeetCode】019. Remove Nth Node From End of List

it2022-05-09  23

描述:删除单链表的倒数第n个节点

分析:

主要思路是用两个指针遍历单链表,先让右指针前进n个节点,然后再让两个指针同步前进,这样右指针到达表尾null的时候,左指针的下一个即是要删除的节点 for (int i = 1; i <= n + 1; i++) { right = right.next; } for (; right != null; right = right.next) { left = left.next; } 为了消除第一个节点的特殊性,用一个头节点指向它 ListNode ahead = new ListNode(0); ahead.next = head; 删除节点 left.next = left.next.next;

完整实现:

public ListNode removeNthFromEnd(ListNode head, int n) { ListNode ahead = new ListNode(0); ahead.next = head; ListNode left = ahead; ListNode right = ahead; for (int i = 1; i <= n + 1; i++) { right = right.next; } for (; right != null; right = right.next) { left = left.next; } left.next = left.next.next; return ahead.next; }

转载于:https://www.cnblogs.com/hippiebaby/p/5501045.html


最新回复(0)