c语言求单链表倒数第k个节点,链表中倒数第k个结点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
解析
设置两个指针,一个遍历链表到第k-1个结点,第二个再开始遍历,直到遍历到链表的最后一个结点,那么第二个指针指向的,就是倒数第k个结点。
Java
/**
* 运行时间:25ms
* 占用内存:9628k
*/
public ListNode FindKthToTail(ListNode head, int k) {
if (k <= 0)
return null;
ListNode p = head;
for (int i = 0; i < k; i++) {
if (head == null)
return null;
head = head.next;
}
while (head != null) {
p = p.next;
head = head.next;
}
return p;
}
/**
* 运行时间:23ms
* 占用内存:9444k
*/
public ListNode FindKthToTail2(ListNode head, int k) {
ListNode p, q;
p = q = head;
int i = 0;
for (; p != null; i++) {
if (i >= k)
q = q.next;
p = p.next;
}
return i < k ? null : q;
}
Python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class FindKthToTail:
# 运行时间:26ms
# 占用内存:6376k
def findKthToTail(self, head, k):
if head == None or k <= 0:
return None
p2 = head
p1 = head
while k > 1:
if p2.next != None:
p2 = p2.next
k -= 1
else:
return None
while p2.next != None:
p1 = p1.next
p2 = p2.next
return p1
c语言求单链表倒数第k个节点,链表中倒数第k个结点相关推荐
- 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...
- c语言链表交换,求单链表的数据交换解决思路
当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net 网友分享于:2013-11-04 浏览:14次 求单链表的数据 ...
- 面试题22. 链表中倒数第k个节点
2020-03-21 1.题目描述 链表中倒数第k个节点 2.题解 倒数第k个,相当于正数第l-k+1个,其中l为链表的长度 3.代码 #include <iostream> using ...
- 14.链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 题目解答 方法一: /* public class ListNode {int val;ListNode next = null;ListNode ...
- 大数计算器概念c语言,用C语言求两个超大整数的和
用C语言求两个超大整数的和 在生活中,我们经常需要计算非常大的数,但是任何一种计算器都有计算范围,一旦超过计算范围就会有精度的损失.或许有同学认为我们可以通过程序来解决,比如对于C语言来说,我们定义一 ...
- 找出无序数组中最小的k个数(top k问题)
2019独角兽企业重金招聘Python工程师标准>>> 给定一个无序的整型数组arr,找到其中最小的k个数 该题是互联网面试中十分高频的一道题,如果用普通的排序算法,排序之后自然可以 ...
- 链表:两个链表的第一个重合节点
题目 https://leetcode-cn.com/problems/3u1WK4/ 求两个链表的第一个重合节点 上图中, c1即为两个链表A.B的第一个重合节点. 解题思路 根据题意,如果两个链表 ...
- 求单项链表的倒数第k个节点(c语言)
求单项链表的倒数第k个节点(只遍历一次) 单向链表求倒数第k个节点我们可以先遍历一遍找出链表的长度,再设置一个指针走(n-k)步可以找到倒数第k个节点. 但是,这需要遍历两次,如果只允许遍历一次我们就 ...
- 【C语言】单链表的相关热点面试题(包括:从尾到头打印,逆置,冒泡,寻找中间节点,倒数k节点)
https://blog.csdn.net/hanjing_1995/article/details/51539599 从尾到头打印单链表 [cpp] view plaincopy void From ...
最新文章
- 字节跳动副总裁杨震原:A/B测试不是万能的,但不会一定不行
- 大脑使用交叉存储,来区分现在和过去
- Bytes int java_Java Bytes.readInt方法代码示例
- 《C和C++程序员面试秘笈》——1.9 如何理解C++是面向对象化的,而C是面向过程化的...
- 自己设计java流程审核_关于工作流引擎取回审批的设计方案与实现过程
- 十个改变了计算机世界的算法,你知道几个?
- MySQL高级 - 锁 - MySQL对锁的支持
- mysql 转置 动态_MySQL 行列转置
- Springboot starter开发之traceId请求日志链路追踪
- sql 大于某个日期_图解面试题:如何比较日期数据?
- 树状数组相关应用之逆序对问题
- 如何暴露内网主机到外网
- 深入浅出 Golang 协程池设计
- Zookeeper-watcher机制源码分析(一)
- Frida android抓包
- CCSK安全认证-M1-云计算概念和体系架构
- canal.adapter启动报错Could not resolve placeholder ‘HOSTNAME%%.*‘
- 一个合格的全栈工程师应该具备哪些技能?
- 高德 android 百度转高德,记一次百度和高德经纬度互转(不是你想的那样)
- cisco路由器进入rommon模式
热门文章
- having查询不含null的集合
- 今日小程序推荐:功夫拼图-爱TA就给TA拼
- 还记得蜘蛛纸牌吗?这个C++开发的小游戏,原来是这样玩的
- App发版流程及注意事项
- 【VUE】微商城(八)----商品列表,商品详情页
- nodeJS IOS手机和平板端在微信中下载文件时,弹出框中文件名乱码解决方案(Content-disposition:attachment; filename)
- 独家 | 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!(附代码)
- [IDEA]报错:类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。
- 百田游戏策划笔试回忆
- Google DeepMind介绍