003 - 返回倒数第k个节点

/**
 *实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
 *
 * 示例输入: 1->2->3->4->5 和 k = 2
 * 输出: 4
 * 说明:给定的 k 保证是有效的。
 */
 
/** 解法一:快慢指针,不改变head */
class Solution {
    public int kthToLast(ListNode head, int k) {
        ListNode slow=head , fast=head;
        while(k!= 0){
            fast=fast.next;
            k--;
        }
        while(fast!=null){
            fast=fast.next;
            slow=slow.next;
        }
        return slow.val;
    }
}

/**  解法2:快慢指针,改变head,虽然占用内存较少,但不推荐 */
class Solution {
    public int kthToLast(ListNode head, int k) {
         ListNode fast=head;
        while(k>0){
            fast=fast.next;
            k--;
        }
        while(fast!=null){
            fast=fast.next;
           head=head.next;
        }
        return head.val;
    }
}
posted @   羽绒333  阅读(32)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示