输入一个链表输出该链表中倒数第k个节点
时间: 2023-09-01 15:01:36 浏览: 192
要输出一个链表中倒数第k个节点,可以使用双指针的方法来实现。
首先,定义两个指针p1和p2,都指向链表的头节点。
让p2向后移动k-1个位置,使得p1和p2之间相隔k-1个节点。
同时移动p1和p2,直到p2指向链表的尾节点。此时p1指向的节点就是倒数第k个节点。
具体的实现步骤如下:
1. 首先判断给定的链表是否为空链表,如果为空则无法输出倒数第k个节点,直接返回null。
2. 定义两个指针p1和p2,都指向链表的头节点。
3. 让p2向后移动k-1个位置,如果移动过程中出现p2为空的情况,则说明链表的节点数少于k个,无法输出倒数第k个节点,直接返回null。
4. 同时移动p1和p2,直到p2指向链表的尾节点。
5. 返回p1指向的节点,即为倒数第k个节点。
整个过程的时间复杂度为O(n),其中n为链表的长度。
以下是具体的实现代码示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def findKthFromEnd(head: ListNode, k: int) -> ListNode:
if not head:
return None
p1 = head
p2 = head
for _ in range(k-1):
p2 = p2.next
if not p2:
return None
while p2.next:
p1 = p1.next
p2 = p2.next
return p1
```
这样通过调用findKthFromEnd函数,传入链表的头节点和k的值,即可找到链表中倒数第k个节点的值。
阅读全文