解法1:暴力 思路:遍历两遍,第一遍得到链表长度,计算得到第二遍指针要到达的位置,然后跳过倒数第n...
} public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pre = head; int nums = length(head) - n; //用链表的长度减去n得到要删除的节点的位置 if (nums==0){ return head.next; } for (int i = 1; i < nums; i++) { //通过循环 节点.next 得到要删除的节点的前一个 pre...
ListNode cur = dummy; //获取被删除节点的上一个节点【因为是删除倒数的节点,又因为是链表,所以我们必须从正面来】 for (int i = 1; i < length - n + 1; ++i) { cur = cur.next; } cur.next = cur.next.next; //删除节点 ListNode ans = dummy.next; //返回删除后的头结点链表 return ans...
在走了n步之后,2号指针开始遍历,当1号指针走到尾的时候,2号指针就是距离尾部第n位的元素。
2021-09-17:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗? 福大大 答案2021-09-17: 双指针。 1.创建虚拟头节点preHead,其next节点指向head。 2.右节点先走,遍历n+1个节点。 3.继续遍历,左右节点都指向next。
在走了n步之后,2号指针开始遍历,当1号指针走到尾的时候,2号指针就是距离尾部第n位的元素。