zoukankan      html  css  js  c++  java
  • 剑指offer——24链表中倒数第k个结点

    题目描述

    输入一个链表,输出该链表中倒数第k个结点。
     
    题解:
      1、普通解法,先遍历一遍计算链表长度,然后遍历到倒数第k个节点;
      2、只遍历一遍,使用双指针,使得头尾指针位差为k,那么当尾指针为空时,头指针就是倒数第k个位置。
     
      
     1 //遍历两次,垃圾
     2 class Solution01 {
     3 public:
     4     ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
     5         if (pListHead == nullptr || k <= 0)return nullptr;
     6         int listLenght = 0;
     7         ListNode *res = nullptr, *p = pListHead;
     8         while (p != nullptr)
     9         {
    10             listLenght++;
    11             p = p->next;
    12         }
    13         if (listLenght < k)return res;
    14         res = pListHead;
    15         int nums = 0;
    16         while (nums < (listLenght - k))
    17         {
    18             res = res->next;
    19             nums++;
    20         }
    21         return res;
    22     }
    23 };
    24 
    25 //遍历一次,双指针
    26 class Solution02 {
    27 public:
    28     ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
    29         if (pListHead == nullptr || k <= 0)return nullptr;
    30         ListNode *L, *Lk;
    31         L = Lk = pListHead;
    32         int i = 0;
    33         for (; Lk != nullptr; ++i)
    34         {
    35             if (i >= k)
    36                 L = L->next;
    37             Lk = Lk->next;
    38         }
    39         if (i < k)return nullptr;
    40         return L;        
    41     }
    42 };
  • 相关阅读:
    vue学习
    BBS登录注册技术点归纳
    BBS项目模态框的使用
    django后台管理系统
    java 之 jsp简介
    http 之 CORS简介
    web 之 session
    linux 之学习路线
    Ubuntu 之 win10更新ubuntu启动项消失
    Web 之 Cookie
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11668783.html
Copyright © 2011-2022 走看看