C++&Python描述 LeetCode C++&Python描述 LeetCode 剑指 Offer 22. 链表中倒数第k个节点

Posted 亓官劼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++&Python描述 LeetCode C++&Python描述 LeetCode 剑指 Offer 22. 链表中倒数第k个节点相关的知识,希望对你有一定的参考价值。

C++&Python描述 LeetCode C++&Python描述 LeetCode 剑指 Offer 22. 链表中倒数第k个节点

  大家好,我是亓官劼(qí guān jié ),在公众号、CSDN、GitHub、B站、华为开发者论坛等平台分享一些技术博文,全平台的id皆为:亓官劼(qí guān jié ),除以上平台,其他的亓官劼id都不是本人,有不少网站在冒充,注意甄别
放弃不难,但坚持一定很酷!时光荏苒,未来可期,一起加油~

  建了个小交流群,Q群:545611263,要进微信群的话可以加我V:qiguanjie2015备注拉群即可。近期对博文更新策略做了些调整,微信公众号后期将用来更新一些总结性的文章(更新频率将会很低),类似于刷题、一些bug解决等杂项记录的blog就更新在CSDN、华为开发者论坛和GitHub上。

  同时文章在GitHub中进行了开源,内含本系列文章目前已刷的各个题解和解题思路,GitHub地址为:LeetCode,如果文章对你有帮助的话可以来GitHub点个star,如果有更好的解题思路的话,也可以来GitHub提交~一起改进

题目

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。

例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

示例:

给定一个链表: 1->2->3->4->5, 和 k = 2.

返回链表 4->5.

解题思路

快慢指针。

C++实现

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* getKthFromEnd(ListNode* head, int k) {
        ListNode *p = head,*q = head;
        while(k--) p = p->next;
        while(p){
            p = p->next;
            q = q->next;
        }
        return q;
    }
};

Python实现

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
        p, q = head, head
        while k:
            k -= 1
            p = p.next
        while p:
            p = p.next
            q = q.next
        return q

以上是关于C++&Python描述 LeetCode C++&Python描述 LeetCode 剑指 Offer 22. 链表中倒数第k个节点的主要内容,如果未能解决你的问题,请参考以下文章

C++&Python 描述 LeetCode 7. 整数反转

C++&Python 描述 LeetCode 9. 回文数

C++&Python描述 LeetCode 704. 二分查找

C++&Python描述 LeetCode 162.寻找峰值

C++&Python 描述 LeetCode 8. 字符串转换整数 (atoi)

C++&Python 描述 LeetCode 2.两数相加