剑指Offer之链表中倒数第k个节点(题15)

简介:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/****************************************                                                                                                 
   2     > File Name:test.c
   3     > Author:xiaoxiaohui
   4     > mail:1924224891@qq.com
   5     > Created Time:2016年05月26日 星期四 19时49分45秒
   6 ****************************************/
  
  
   //当用一个指针遍历链表不能解决问题时,可以尝试用两个指针来做
  10  //一个指针走的快一点,一个指针走的慢一点
  11  //   可以简言之为  《快慢指针》  哈哈哈............
  12 
  13 
  14 #include<stdio.h>
  15 
  16 
  17 ListNode* FindNode(ListNode* head,  int  k)
  18 {
  19      if (head == NULL || k <= 0)
  20     {
  21          printf ( "parameter is error!\n" );
  22          return  NULL;
  23     }
  24 
  25     ListNode* fitst = head;
  26     ListNode* second = head;
  27 
  28      for ( int  i = 0; i < k - 1; i++)
  29     {
  30          if (first->_next == NULL)
  31         {
  32              printf ( "the K is bigger than the list len!\n" );
  33              return  NULL;
  34         }
  35         first = first->_next;
  36     }
  37 
  38      while (first->_next != NULL)
  39     {
  40         first = first->_next;
  41         second = second->_next;
  42     }
  43 
  44      return  second;
  45 }









本文转自 ye小灰灰  51CTO博客,原文链接:http://blog.51cto.com/10704527/1783646,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
机器学习/深度学习 算法
24. 两两交换链表中的节点, 19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交
1. **两两交换链表中的节点**:通过引入虚拟头结点,使所有节点都能采用统一的交换逻辑,避免对头结点单独处理。 2. **删除链表的倒数第N个节点**:利用双指针技巧,让快慢指针保持N个节点的距离,当快指针到达末尾时,慢指针正好指向待删除节点的前一个节点。 3. **链表相交**:先计算两链表长度并调整起点,确保从相同距离末尾的位置开始遍历,从而高效找到相交节点或确定无交点。 以上方法均在时间复杂度和空间复杂度上进行了优化,适合用于理解和掌握链表的基本操作及常见算法设计思路。
|
9月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
142 1
|
9月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
92 0
LeetCode第二十四题(两两交换链表中的节点)
|
9月前
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
106 0
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
106 2
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
142 1
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表