面试题22:链表中倒数第k个节点
2024-09-08 16:31:27
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
def FindKthToTail(self, head, k):
# write code here
# 先考虑k若大于链表的长度,返回None,链表的长度咋算,不太会,可以在遍历的时候count+1
# 我的思路是,从头到尾遍历链表,将其存在list中,如果len(list)<k,返回None;如果k=0,也返回None result = []
while head:
result.append(head)
head = head.next
if k > len(result) or k == 0:
return None
return result[len(result)-k]
思路2:参考书书中的解题思路,只遍历一遍链表,就可以找到倒数第k个节点。我们这样思考,倒数第k个就是正数第n-k+1个。可以设置2个指针,2个指针相差k-1步,当前面的走的指针走到最后了,那我们的后指针就走到了n-k+1的位置。
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
def FindKthToTail(self, head, k):
# write code here
if head == None:
return None
pointer1 = head
pointer2 = head
count = 0 while pointer1:
if count > k-1:
pointer2 = pointer2.next
count += 1
pointer1 = pointer1.next
if count<k or k<=0:
return None
return pointer2
最新文章
- 2013年度IT博客大赛跻身10强
- HTML 学习笔记 JavaScript(事件)
- oracle often commands
- 剑指架构师系列-tomcat6通过伪异步实现connector
- Android 身份证号码查询、手机号码查询、天气查询
- JSP page指令详解
- 记录:在老XPS1330上安装CentOS7
- 测试方法---";SFDIPOT";
- 使用MxNet新接口Gluon提供的预训练模型进行微调
- Python mac安装mysqlclient的一个bug
- 使用 Chrome DevTools 调试 JavaScript
- caffemodel模型
- 当对具体的一条记录进行操作时候 需要传递该记录的id
- Oracle数据重复,只取一条
- Vue+Vue-router微信分享功能
- idea设置代码块
- leetcode309
- html css col-md-offset
- HTML相对路径相对目录--上级目录及下级目录的写法
- filesystems\configfs\configfs.txt 翻译Android下的