求链表的倒数第K个节点

1 篇文章 0 订阅
0 篇文章 0 订阅

项目做多了,最近对数据结构以及算法突然感兴趣。 做个题目玩玩:


题目如题,要求用一遍遍历实现。


一开始看到题目, 想到了反序然后求k个,但是这样的话就需要n+k次,不是一边遍历了。 后来一下,可以设置两个同步的指针, 之间间隔是k个,然后同步走,当前面的到达终点后,第二部是不就是倒数第k个了吗?


Python 代码:

'''
Created on Feb 26, 2013




'''


if __name__ == '__main__':
    pass




head = {}
#construct the dict 
for item in range(0, 100):
    #construct the list
    dict1 = {'value':item,'next':[]}
    if not head:
        tmp = dict1
        head = dict1
    else:
        tmp['next'] = dict1
    tmp = dict1    


#print the list 
#tmp = head
#while tmp:
#    print tmp['value']
#    tmp = tmp['next']




#find the least K
#find the first K elems
i = 0
k = 1
tmp = head
while i <= k and tmp:
    tmp = tmp['next']
    i+=1
finder = head
while tmp:
    tmp = tmp['next']
    finder = finder['next']


print finder
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值