摘要:递归法复杂度时间空间思路当递归到链表尾部时返回,每次返回时长度加,一旦长度为时记录下该节点。双指针法复杂度时间空间思路用两个指针,快指针先走步,然后快慢指针同时开始走,保持的距离,这样当快指针到达末尾时,慢指针就是倒数第个。
Nth to Last Node in List
递归法 复杂度Find the nth to last element of a singly linked list.
The minimum number of nodes in list is n.
时间 O(N) 空间 O(N)
思路当递归到链表尾部时返回,每次返回时长度加1,一旦长度为N时记录下该节点。
双指针法 复杂度时间 O(N) 空间 O(1)
思路用两个指针,快指针先走N步,然后快慢指针同时开始走,保持N的距离,这样当快指针到达末尾时,慢指针就是倒数第N个。
代码public class Solution { ListNode nthToLast(ListNode head, int n) { // write your code here ListNode slow = head; ListNode fast = head; while(n-- > 0){ fast = fast.next; } while(fast != null){ fast = fast.next; slow = slow.next; } return slow; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64520.html
摘要:依然是一道找倒数第个结点的链表题,用双指针做。先走,然后和一起走,直到为,的位置就是倒数第个位置。 Problem Find the nth to last element of a singly linked list. The minimum number of nodes in list is n. Example Given a List 3->2->1->5->null ...
Problem Given a linked list, remove the nth node from the end of list and return its head. Example Given linked list: 1->2->3->4->5->null, and n = 2. After removing the second node from the end, the l...
摘要:给定一个链表,删除链表的倒数第个节点,并且返回链表的头结点。示例给定一个链表和当删除了倒数第二个节点后,链表变为说明给定的保证是有效的。值得注意的的是,指向应当删除的节点并无法删除它,应当指向该删除节点的前一个节点。 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 Given a linked list, remove the n-th node from the ...
摘要:给定一个链表,删除链表的倒数第个节点,并且返回链表的头结点。示例给定一个链表和当删除了倒数第二个节点后,链表变为说明给定的保证是有效的。值得注意的的是,指向应当删除的节点并无法删除它,应当指向该删除节点的前一个节点。 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 Given a linked list, remove the n-th node from the ...
摘要:虽然时间复杂度还是但是显然我们可以再一次遍历中完成这个任务。现在跳出下标的思路,从另一个角度分析。快慢节点之间的距离始终是。当快节点到达终点时,此时的慢节点就是所要删去的节点。 题目要求 Given a linked list, remove the nth node from the end of list and return its head. For example, ...
阅读 1382·2021-10-14 09:43
阅读 972·2021-09-10 10:51
阅读 1423·2021-09-01 10:42
阅读 2172·2019-08-30 15:55
阅读 563·2019-08-30 15:55
阅读 2325·2019-08-30 14:21
阅读 1678·2019-08-30 13:04
阅读 3450·2019-08-29 13:09