当前位置: 首页 > news >正文

C语言面试题之返回倒数第 k 个节点

返回倒数第 k 个节点

实例要求

  • 1、实现一种算法,找出单向链表中倒数第 k 个节点;
  • 2、返回该节点的值;
示例:输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:给定的 k 保证是有效的。

实例分析

  • 1、定义快慢指针;
  • 2、快指针先移动k步、链表长度小于k,返回特殊值;
  • 3、快指针和慢指针同时移动,直到快指针到达链表末尾;
  • 4、慢指针指向倒数第k个节点;

示例代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/int kthToLast(struct ListNode* head, int k){if (head == NULL || k <= 0) {return -1; // 返回一个特殊值表示无效输入}struct ListNode* fast = head;struct ListNode* slow = head;// 快指针先移动k步for (int i = 0; i < k; i++) {if (fast == NULL) {return -1; // 链表长度小于k,返回特殊值}fast = fast->next;}// 快指针和慢指针同时移动,直到快指针到达链表末尾while (fast != NULL) {fast = fast->next;slow = slow->next;}// 慢指针指向倒数第k个节点return slow->val;}

代码解释

  • 1、int kthToLast(struct ListNode* head, int k): 这个函数接收一个指向链表头部的指针 head 和一个整数 k,表示要找的倒数第 k 个节点。函数返回倒数第 k 个节点的值;
  • 2、如果输入的链表头指针为空 head == NULL 或者 k 的值小于等于 0 k <= 0,则返回一个特殊值 -1,表示无效输入;
  • 3、接着,定义两个指针 fast 和 slow,初始都指向链表的头部 head;
  • 4、使用快慢指针的技巧,快指针 fast 先向前移动 k 步;
  • 5、如果链表的长度小于 k,即快指针已经到达链表末尾时仍然为 NULL,则返回特殊值 -1,表示无效输入;
  • 6、接着,快指针 fast 和慢指针 slow 同时向前移动,直到快指针 fast 到达链表末尾(即 fast == NULL);
  • 7、此时慢指针 slow 指向的节点就是倒数第 k 个节点,返回其值 slow->val。

运行结果

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/336228.html

相关文章:

  • 力扣爆刷第116天之CodeTop100五连刷66-70
  • B站广告推广操作教程及费用?
  • Linux操作系统之docker基础
  • 35-3 使用dnslog探测fastjson漏洞
  • Qt——示波器/图表 QCustomPlot
  • 《图解Vue3.0》- 调试
  • 【PyQt5篇】和子线程进行通信
  • JavaScript数组操作方法全录
  • 8.排序(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序)的模拟实现
  • (详解)python调用另一个.py文件中的类和函数或直接运行另一个.py文件
  • 每日一题:修改后的最大二进制字符串
  • Redis 5种数据结构常用命令
  • 23、区间和
  • Python零基础从小白打怪升级中~~~~~~~文件和文件夹的操作 (1)
  • Qt plugin 开发UI界面插件
  • Android查看SO库的依赖
  • 麒麟KOS删除鼠标右键新建菜单里不需要的选项
  • DPDK系列之四十二DPDK应用网络编程UDP编程
  • 金三银四面试题(十九):MySQL中的锁
  • 【JavaScript】原型链/作用域/this指针/闭包
  • Python的MATLAB使用
  • 文件输入/输出流(I/O)
  • docker,schedule job和environment variables三者的含义与区别
  • 90天玩转Python—16—基础知识篇:面向对象知识详解
  • python 标准库之openpyxl的常规操作
  • 90天玩转Python—12—基础知识篇:Python自动化操作Email:发送邮件、收邮件与邮箱客户端操作全解析
  • 利用lidar_align来进行lidar和imu标定
  • 牛客NC93 设计LRU缓存结构【hard 链表,Map Java】
  • 机器学习和深度学习 -- 李宏毅(笔记与个人理解1-6)
  • 低功耗全极霍尔开关芯片 D02,磁性开关点精确,对工艺和温度变化不敏感