问题:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { /** * 删除倒数第n个节点 * 思路1: * 两次遍历 * 第一次遍历:记录该链表一共有多少个节点 len * 找到要删除节点的位置 len = len-n * 第二次遍历:len每次减1,当len为0是即为要删除的节点 * 将要删除节点后一个节点覆盖当前节点 */ public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(-1); dummy.next = head; if (n == 1 && head.next == null) { return null; } int len = 0; ListNode temp = head; while (temp != null) { temp = temp.next; len++; } int del = len - n; temp = dummy; while (del > 0) { temp = temp.next; del--; } temp.next = temp.next.next; return dummy.next; } }
原文:https://www.cnblogs.com/nxzblogs/p/11275844.html