题目描述

输入一个链表,输出该链表中倒数第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个结点相关推荐

  1. 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)

    题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...

  2. c语言链表交换,求单链表的数据交换解决思路

    当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net  网友分享于:2013-11-04  浏览:14次 求单链表的数据 ...

  3. 面试题22. 链表中倒数第k个节点

    2020-03-21 1.题目描述 链表中倒数第k个节点 2.题解 倒数第k个,相当于正数第l-k+1个,其中l为链表的长度 3.代码 #include <iostream> using ...

  4. 14.链表中倒数第k个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 题目解答 方法一: /* public class ListNode {int val;ListNode next = null;ListNode ...

  5. 大数计算器概念c语言,用C语言求两个超大整数的和

    用C语言求两个超大整数的和 在生活中,我们经常需要计算非常大的数,但是任何一种计算器都有计算范围,一旦超过计算范围就会有精度的损失.或许有同学认为我们可以通过程序来解决,比如对于C语言来说,我们定义一 ...

  6. 找出无序数组中最小的k个数(top k问题)

    2019独角兽企业重金招聘Python工程师标准>>> 给定一个无序的整型数组arr,找到其中最小的k个数 该题是互联网面试中十分高频的一道题,如果用普通的排序算法,排序之后自然可以 ...

  7. 链表:两个链表的第一个重合节点

    题目 https://leetcode-cn.com/problems/3u1WK4/ 求两个链表的第一个重合节点 上图中, c1即为两个链表A.B的第一个重合节点. 解题思路 根据题意,如果两个链表 ...

  8. 求单项链表的倒数第k个节点(c语言)

    求单项链表的倒数第k个节点(只遍历一次) 单向链表求倒数第k个节点我们可以先遍历一遍找出链表的长度,再设置一个指针走(n-k)步可以找到倒数第k个节点. 但是,这需要遍历两次,如果只允许遍历一次我们就 ...

  9. 【C语言】单链表的相关热点面试题(包括:从尾到头打印,逆置,冒泡,寻找中间节点,倒数k节点)

    https://blog.csdn.net/hanjing_1995/article/details/51539599 从尾到头打印单链表 [cpp] view plaincopy void From ...

最新文章

  1. 字节跳动副总裁杨震原:A/B测试不是万能的,但不会一定不行
  2. 大脑使用交叉存储,来区分现在和过去
  3. Bytes int java_Java Bytes.readInt方法代码示例
  4. 《C和C++程序员面试秘笈》——1.9 如何理解C++是面向对象化的,而C是面向过程化的...
  5. 自己设计java流程审核_关于工作流引擎取回审批的设计方案与实现过程
  6. 十个改变了计算机世界的算法,你知道几个?
  7. MySQL高级 - 锁 - MySQL对锁的支持
  8. mysql 转置 动态_MySQL 行列转置
  9. Springboot starter开发之traceId请求日志链路追踪
  10. sql 大于某个日期_图解面试题:如何比较日期数据?
  11. 树状数组相关应用之逆序对问题
  12. 如何暴露内网主机到外网
  13. 深入浅出 Golang 协程池设计
  14. Zookeeper-watcher机制源码分析(一)
  15. Frida android抓包
  16. CCSK安全认证-M1-云计算概念和体系架构
  17. canal.adapter启动报错Could not resolve placeholder ‘HOSTNAME%%.*‘
  18. 一个合格的全栈工程师应该具备哪些技能?
  19. 高德 android 百度转高德,记一次百度和高德经纬度互转(不是你想的那样)
  20. cisco路由器进入rommon模式

热门文章

  1. having查询不含null的集合
  2. 今日小程序推荐:功夫拼图-爱TA就给TA拼
  3. 还记得蜘蛛纸牌吗?这个C++开发的小游戏,原来是这样玩的
  4. App发版流程及注意事项
  5. 【VUE】微商城(八)----商品列表,商品详情页
  6. nodeJS IOS手机和平板端在微信中下载文件时,弹出框中文件名乱码解决方案(Content-disposition:attachment; filename)
  7. 独家 | 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!(附代码)
  8. [IDEA]报错:类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。
  9. 百田游戏策划笔试回忆
  10. Google DeepMind介绍