链表中倒数第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

链表中倒数第K个结点 牛客网 程序员面试金典 C++ Python的更多相关文章

  1. 输出单层结点 牛客网 程序员面试金典 C++ Python

    输出单层结点 牛客网 程序员面试金典 C++ Python 题目描述 对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表. 给定二叉树的根结点指针TreeNode* root,以及链表上 ...

  2. 链表中倒数第K个结点 牛客网 剑指Offer

    链表中倒数第K个结点 牛客网 剑指Offer 题目描述 输入一个链表,输出该链表中倒数第k个结点. # class ListNode: # def __init__(self, x): # self. ...

  3. 寻找下一个结点 牛客网 程序员面试金典 C++ java Python

    寻找下一个结点 牛客网 程序员面试金典 C++ java Python 题目描述 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继). 给定树的根结点指针TreeNode* root ...

  4. 链表分割 牛客网 程序员面试金典 C++ Python

    链表分割 牛客网 程序员面试金典 C++ Python 题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* p ...

  5. 访问单个结点的删除 牛客网 程序员面试金典 C++ Python

    访问单个结点的删除 牛客网 程序员面试金典 C++ Python 题目描述 实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点. 给定待删除的节点,请执行删除操作,若该节点为尾节点,返回f ...

  6. 回文链表 牛客网 程序员面试金典 C++ Python

    回文链表 牛客网 程序员面试金典  C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...

  7. 第K个数 牛客网 程序员面试金典 C++ Python

    第K个数 牛客网 程序员面试金典 C++ Python 题目描述 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测 ...

  8. 链式A+B 牛客网 程序员面试金典 C++ Python

    链式A+B 牛客网 程序员面试金典 C++ Python 题目描述 有两个用链表表示的整数,每个结点包含一个数位.这些数位是反向存放的,也就是个位排在链表的首部.编写函数对这两个整数求和,并用链表形式 ...

  9. 清除行列 牛客网 程序员面试金典 C++ Python

    清除行列 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零. 给定一个N阶方阵int[]mat和矩阵的阶数n,请返回完成操作后的 ...

随机推荐

  1. CodeForce-803B Distances to Zero(贪心DP)

    Distances to Zero CodeForces - 803B 题意:给定一个数列 a0, a1, ..., an - 1.对于数列中的每一项都要求出与该项最近的0与该项的距离.保证数列中有至 ...

  2. python字典时间日期

    字典时间日期 学习完本篇,你将会深入掌握 字典操作. 1.如何新建一个字典 2.如何正序以及反序访问字典 3.如何更新字典元素 4.如何删除字典 日期时间操作 1.如何打印一个2021-9-20 17 ...

  3. xmind使用技巧

    xmind看似每个人都会使用,但是掌握一些小技巧,能够有效提升工作效率. 多行复制粘贴 在xmind中选中多行,复制然后可以直接粘贴到excel.word当中. 在excel.word选中多行,复制然 ...

  4. jmeter长时间压测

    如何进行24h小时的压测? 长时间压测注意事项 生成报告文件过大 https://www.cnblogs.com/SunshineKimi/p/12298668.html

  5. css定位:p:nth-child(n)

    p:nth-child(n) 定位p标签下的第一个元素,下标从1开始. 首先是一个标签下有多个相同的元素. 如index_service_cnt js_service_list下有多个class=&q ...

  6. CI框架 ::集成极光推送

    分三步 1:引入类: 2:新建Jpush类: 3:修改源码(PHP5.3.3环境)

  7. Object of type type is not JSON serializable

    报这个错的原因是因为json.dumps函数发现字典里面有bytes类型的数据,无法编码.解决方法:将bytes类型的数据就把它转化成str类型. 定义dates[]后return JsonRespo ...

  8. Fiddler修改抓包请求

    hi,说到fiddler的用途,第一时间想到抓包,不过还有一个功能是:支持修改请求. 那么问题来了,怎么做呢?很简单,先定下我们需要修改哪个请求. 这里用F12跟fiddler做演示. 首先我们在F1 ...

  9. 2017年第二届广东省强网杯线上赛WEB:Musee de X writeup(模板注入漏洞)

    目录 解题思路 总结 解题思路 拿到手上,有四个页面 首先按照题目要求执行,尝试注册一个名为admin的账户 这种情况,路径都给出来了,很可能就是目录遍历或者文件上传了 回到初始界面,点击链接here ...

  10. Hutool时间和日期相关工具

    日期时间工具 获取当前时间(1) public class HDateAndTime { public static void main(String[] args) { //获取当前时间 Date ...