zoukankan      html  css  js  c++  java
  • 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;
        }
    };
    

      

  • 相关阅读:
    只是为了好玩——Linux之父林纳斯自传
    Unity Sprite Atlas Compression
    Bitmap动画
    UnityShader:HSV(色相,饱和度,亮度)转换
    Using Flash Builder with Flash Professional
    Flash Decompiler
    One Night Ultimate Werewolf Daybreak
    Visual Studio CLR Profiler
    Photoshop 融合属性 Unity Shader
    .NET GC
  • 原文地址:https://www.cnblogs.com/xiaohaigege/p/5183994.html
Copyright © 2011-2022 走看看