实现一种算法,找出单向链表中单数第k个节点。返回该节点的值.
输入:1->2->3->4->5 和 k = 2输入: 4说明:给定的k保证是有效的
这道题其实就是双指针:
- 第一个指针默认指向
head节点 ,第二个指针指向head+k位置的节点; - 如果第二个指针
next不为空,双指针同时往后偏移,直至第二个指针指向的是链表的尾结点;
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/int kthToLast(struct ListNode* head, int k){struct ListNode *node = head;struct ListNode *target = head;// 首先第二个指针找到第k个节点while (k--) {node = node->next;}// 双指针同时移动,直到第二个指针指向尾节点while (node) {node = node->next;target = target->next;}return target->val;}
