• 2.2链表中倒数第k个结点


    题目描述

    输入一个链表,输出该链表中倒数第k个结点。
     
    解法:(一)暴力方法,先求出链表长度,倒数第k个,也就是正数第L-K个
    class Solution {
    public:
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        //思路,获取链表的长度, 用L-k就是当下节点的位置啊
            if(pListHead==NULL||k<=0)return NULL;
            int len = 1;
            ListNode* p = pListHead->next;
            while(p) {
                len++;
                p = p->next;
            }
            if(len < k) return NULL;
            p = pListHead;
            for(int i = 0; i < len - k; i++) {
                p = p->next;
            }
            return p;
        }
    };
    

    (二)复杂度小的解法,两个指针,一个先滑动到K-1个元素,已经指向K,然后再后一个指针开始滑动,当前一个滑动到末尾的元素时,刚好后一个滑动到倒数时候第k-1个指针,指向倒数第k个元素,刚好反一反,利用了这个思想进行编程实现。

    class Solution {
    public:
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
            if(pListHead==NULL||k<=0)return NULL;
            ListNode* pFirst = pListHead;
            ListNode* pLast = pListHead;
            for(int i = 1; i < k; i++) {
                if(pFirst->next != NULL) pFirst = pFirst->next;
                else return NULL;
            }
            while(pFirst->next != NULL) {
                pFirst = pFirst->next;
                pLast = pLast->next;
            }
            return pLast;
        }
    };
    

      

  • 相关阅读:
    python 批量文件重命名
    python 各种转义字符
    python 生成器
    python 迭代器 itertools模块中常用工具函数
    python 内建迭代函数 iter()
    python 迭代器
    python 常用标准库简介
    python 包及其文件的调用
    python 导入模块或函数
    python 手工抛出异常
  • 原文地址:https://www.cnblogs.com/xiaohaigege/p/5183994.html
Copyright © 2020-2023  润新知