ChatGPT刷力扣面试题02.02返回倒数第 k 个节点

0 651

题目描述

实现一种算法,找出单向链表中倒数第 k 个节点返回该节点的值。

注意:本题相对原题稍作改动

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:

给定的 k 保证是有效的。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/kth-node-from-end-of-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

开始解题(TypeScript)

ChatGPT刷力扣面试题02.02返回倒数第 k 个节点

要找出单向链表中倒数第 k 个节点,我们可以使用双指针法来解决这个问题。

首先,我们定义两个指针,一个快指针和一个慢指针,初始时两个指针都指向链表的头节点。

然后,我们让快指针先向前移动 k 个节点。

接下来,我们同时移动快指针和慢指针,直到快指针指向链表的末尾节点。

此时,慢指针所指向的节点就是倒数第 k 个节点。

最后,我们返回慢指针所指向的节点的值。

具体的实现如下:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

def findKthFromEnd(head, k):
    if not head or k <= 0:
        return None
    
    fast = head
    for _ in range(k):
        if not fast:
            return None
        fast = fast.next
    
    slow = head
    while fast:
        fast = fast.next
        slow = slow.next
    
    return slow.val

时间复杂度分析: 双指针法只需要遍历链表一次,所以时间复杂度是 O(n),其中 n 是链表的长度。

ChatGPT刷力扣面试题02.02返回倒数第 k 个节点
ChatGPT刷力扣面试题02.02返回倒数第 k 个节点

逐步验算

ChatGPT刷力扣面试题02.02返回倒数第 k 个节点
ChatGPT刷力扣面试题02.02返回倒数第 k 个节点

实际应用

ChatGPT刷力扣面试题02.02返回倒数第 k 个节点

这个函数可以用于解决一些与链表相关的问题,例如:

  1. 找到链表中倒数第 k 个节点的值:通过调用 findKthFromEnd(head, k) 函数,可以找到链表中倒数第 k 个节点的值。这在一些需要从链表末尾开始操作的场景中非常有用,比如删除倒数第 k 个节点、获取倒数第 k 个节点的前一个节点等。
  2. 判断链表是否有环:可以使用该函数来检测链表中是否存在环。如果链表中存在环,那么慢指针 slow 和快指针 fast 最终会相遇;如果链表中不存在环,那么快指针 fast 最终会到达链表的末尾,此时 fast 为 null
  3. 找到链表中的中间节点:可以使用该函数找到链表的中间节点。通过让快指针 fast 每次移动两个节点,慢指针 slow 每次移动一个节点,当快指针 fast 到达链表末尾时,慢指针 slow 恰好指向链表的中间节点。
  4. 删除链表的倒数第 k 个节点:可以使用该函数找到链表中倒数第 k 个节点,并删除它。通过找到倒数第 k 个节点的前一个节点,将其 next 指针指向倒数第 k 个节点的下一个节点,即可实现删除。
  5. 链表反转:可以利用该函数找到链表的倒数第一个节点,并将其作为新的头节点,从而实现链表的反转。

这些是函数的一些实际应用示例,但实际上,该函数可以用于解决更多与链表相关的问题。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章资源,如无特殊说明或标注,均为本站网友和创作者贡献分享。如若本站内容侵犯了原著者的合法权益,可联系网站客服QQ2743319061删除。

云炬星球 云炬随笔 ChatGPT刷力扣面试题02.02返回倒数第 k 个节点 https://src.yunjunet.cn/1627200.html

常见问题
  • 放心亲,我们不会为了几十块钱的东西坏了名声!
查看详情
  • 方法一:点击“立即下载.”按钮,付款后在下载弹窗的虚线框的隐藏信息里获取 方法二:在正文底部使用VIP查看隐藏的解压密码 方法三:联系【云炬网络】公众号客服获取
查看详情
  • 付款后会出现“立即下载”按钮(点击即可下载),如果下载失败也可以联系客服发订单截图补发。
查看详情
  • 登录购买会多端同步购买记录,永久可以查看反复下载;非登录购买仅将购买记录保存到本地浏览器中,浏览器cookie清除后无法再次下载。先右上角点登录,然后点击微信图标可以快速授权注册登录^_^
查看详情
  • 可以试看。点击”查看演示“或“试看预览”按钮可以试读从资料目录中节选的部分内容,也可以自己指定想试看的内容。
查看详情
  • 原因一:本站所有资源已开启有效性检测(服务器24h全自动监测),当监测到下载链接无法访问时会提示“该资源已失效,请勿购买”,遇到这种情况可以联系客服修复失效的下载链接,或直接联系客服在淘宝下单购买即可。(检测原理:购买前服务器程序会预访问下载链接,响应值为200说明资源有效允许购买,响应值为404或502等报错说明资源失效禁止购买)。原因二:上传者未启用“下载”选项。
查看详情
官方客服团队

为您解决烦忧 - 24小时在线 专业服务