zoukankan      html  css  js  c++  java
  • 链表中倒数第K个结点 牛客网 程序员面试金典 C++ Python

    链表中倒数第K个结点 牛客网 程序员面试金典 C++ Python

    • 题目描述
    • 输入一个链表,输出该链表中倒数第k个结点。

    C++

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        //run:3ms memory:476k
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
            if(NULL == pListHead) return NULL;
            if(0 == k) return NULL;
            ListNode* p = pListHead;
            ListNode* res = pListHead;
            for(unsigned int i = 0; i< k; i++)
                if (p) p=p->next;
                else return NULL;
            for(;p;p=p->next)
                res = res->next;
            return res;
        }
         
        ListNode* FindKthToTail2(ListNode* pListHead, unsigned int k) {
            if(NULL == pListHead) return NULL;
            if(0 == k) return NULL;
            ListNode* p = pListHead;
            ListNode* res = pListHead;
            for(unsigned int i = 0; i< k; i++)
                if (p) p=p->next;
                else return NULL;
            while(p) {
                res = res->next;
                p = p->next;
            }
            return res;
        }
    };

    Python

    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        #run:33ms memory:5728k
        def FindKthToTail2(self, head, k):
            if k<=0 or head == None:
                return None
            p = head
            ret = head
            for i in range(k):
                if p:p = p.next
                else:return None
            while(p):
                p = p.next
                ret = ret.next
            return ret
            
        #run:22ms memory:5852k
        def FindKthToTail(self, head, k):
            if k<=0 or head == None:
                return None
            else:
                count = 0
                p = head
                ret = head
                while p!=None:
                    count = count + 1
                    if count > k:
                        ret=ret.next
                    p = p.next
                if count < k:
                    ret = None
                return ret
    
  • 相关阅读:
    linux常用的基础知识
    【AW346】走廊泼水节
    【AW355】异象石
    【POJ3417】闇の連鎖
    【APIO2010】巡逻
    【SDOI2011】消防
    【BJWC2010】次小生成树
    【POJ3613】Cow Relays
    【POJ1734】Sightseeing trip
    【POJ1094】Sorting it all out
  • 原文地址:https://www.cnblogs.com/vercont/p/10210300.html
Copyright © 2011-2022 走看看