剑指offer之链表中倒数第k个结点(Python)
2017-10-15 19:32
651 查看
题目描述
输入一个链表,输出该链表中倒数第k个结点。思路1:这题用Python并不难,主要是利用Python的append完成所有结点的保存。
代码如下:
注意:在function使用return返回list[-k]结点时,并不是返回结点的val,所以使用print函数打印时,本地编译器只是出现“<__main__.ListNode instance at 0x000000000605D108>”类似的输出。
思路2:将链表头赋给两个新指针P1和P2,让指针P1先走k步,然后两个指针同时走,等P1走完,此时P2所指向的结点即为倒数第k个结点。
# -*- coding: utf-8 -*- """ Created on Sun Oct 15 19:04:13 2017 @author: gb_xiao Mail: mingliumengshao@163.com """ """ 题目描述: 输入一个链表,输出该链表中倒数第k个结点。 """ class ListNode(): def __init__(self, x): self.val = x self.next = None def CreateList(n): if n == 0: return None if n ==1: return ListNode(1) else: listNode = ListNode(1) tmp = listNode for i in range(2,n+1): tmp.next = ListNode(i) tmp = tmp.next return listNode def function1(listNode,k): lists=[] while listNode: lists.append(listNode) listNode = listNode.next if len(lists) < k or k<=0: return else: return lists[-k]
def function2(listNode,k): p1 = listNode p2 = listNode if k <= 0 or p1 == None: return i = 0 while i < k and p1 != None: i += 1 p1 = p1.next if p1 == None and k > i: return while p1 != None: p1 = p1.next p2 = p2.next return p2
def printlist(listNode): tmp = listNode while tmp: print tmp.val tmp = tmp.next def main(): listNode = CreateList(11) print "已知链表为:" printlist(listNode) print "倒数第k个结点" print function(listNode, 4) if __name__=="__main__": main()
相关文章推荐
- python剑指offer 链表倒数第k个结点
- 《苦练算法》-剑指Offer- 十四、 链表中倒数第k个结点 -python/java编写
- 链表中倒数第k个结点[剑指offer]之python实现
- 剑指Offer:面试题15 链表中倒数第k个结点
- 剑指Offer-链表中倒数第k个结点
- [剑指offer-1517]链表中倒数第k个结点
- 剑指offer之十三---链表中倒数第k个结点
- 剑指offer:链表中倒数第k个结点(链表)
- 【剑指offer】链表中倒数第K个结点
- 剑指offer-链表中倒数第K个结点
- 剑指offer面试题15 链表中倒数第K个结点
- 剑指offer 之 输出链表的倒数第K个结点
- 剑指offer:输入一个链表,输出该链表中倒数第k个结点。
- 【剑指Offer面试题】 九度OJ1517:链表中倒数第k个结点
- 剑指offer 链表中倒数第k个结点 @python
- 剑指offer--链表中倒数第k个结点
- (C++)剑指offer-14:链表中倒数第k个结点(代码的鲁棒性)
- 剑指offer-面试题15.链表中倒数第k个结点
- [剑指Offer] 14.链表中倒数第k个结点
- 剑指offer--面试题15:链表中倒数第K个结点--Java实现