美文网首页
找出单链表中的倒数第k个元素

找出单链表中的倒数第k个元素

作者: 黄金螺旋 | 来源:发表于2018-11-20 13:59 被阅读0次

题目

给定一个单链表找到倒数第k个元素 ,无环

题目中的关键点

单链表 (没有长度)

  • 如果知道单链表的长度len,则倒数第k个元素,就可以遍历链表到len-k个位置即可 ,但是要获得长度,必须先遍历一遍链表
  • 如果我们不知道链表长度,如何解?
  • 假如有两个指针一个快一个慢,快和慢之间的距离为k,就是从链表尾到倒数第k个节点的距离,当快的指针走链表尾部,这时候慢指针是不是就是指向倒数第k个节点
  • 假如快指针为p1,慢指针为p2 ,p1 先沿着链表头部走到第k个位置,此时p2开始前行,每次前进一步,当p1==null时,快指针走到了链表尾部,此时p2的位置就是倒数第k个节点

时间复杂度O(n)

执行顺序图

tcp-链表倒数第k个元素.png
链表节点简单结构
public class Node<T> {

    public Node next;
    public T data;

    public Node(T data) {
        this.data = data;
    }

}
算法实现
 public static Node<Integer> findK(Node<Integer> head, int k) {

        Node<Integer> p1 = head;
        Node<Integer> p2 = head;
        int index = 0;
        while (p1 != null) {
            p1 = p1.next;
            if (index == k){
                p2 = p2.next;
            }else {
                index++;
            }

        }
        return p2;
    }

相关文章

  • 1.5 如何找出单链表中倒数第k个元素

    题目 找出单链表中倒数第k个元素,例如给定1>2>3>4>5>6>7,则单链表中的倒数第k=3个元素为5.

  • [链表] 查找单链表中的倒数第k个元素

    1、为了找出倒数第k个元素,最容易想到的办法是首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第k个,转换为...

  • 单链表

    单链表 单链表问题与思路 找出单链表的倒数第K个元素(仅允许遍历一遍链表)使用指针追赶的方法。定义两个指针fast...

  • 面试常考的链表操作

    1、链表的结构 2、链表的逆序 3、找出倒数第k个 4、找出中间元素 5、判断链表是否有环

  • 找出单链表中的倒数第k个元素

    题目 给定一个单链表找到倒数第k个元素 ,无环 解 题目中的关键点 单链表 (没有长度)如果知道单链表的长度len...

  • 面试算法2

    存在一个单链表,寻找这个单链表倒数第K的元素。比如{1->2->3->4->5},倒数第2个元素为4。 分析一最容...

  • JZ-014-链表中倒数第 K 个结点

    链表中倒数第 K 个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点。题目链接: 链表中倒数第 K 个结点...

  • 链表中倒数第k个节点

    《剑指offer》面试题22:代码中倒数第k个节点 题目:输入一个单链表,输出该链表中倒数第k个结点。 思路:定义...

  • 2.单链表

    该部分包含以下内容-单链表的增删改查-计算链表长度-逆序链表-寻找(删除)链表倒数第K个元素-逆序打印链表(使用栈)

  • 单链表常见面试题

    统计单链表中有效节点的个数 查找单链表中的倒数第k个节点(Sina) 单链表的反转(Tencent) 从尾到头打印...

网友评论

      本文标题:找出单链表中的倒数第k个元素

      本文链接:https://www.haomeiwen.com/subject/ahztqqtx.html