美文网首页
链表一些算法技巧&模版总结

链表一些算法技巧&模版总结

作者: itbird01 | 来源:发表于2022-02-25 07:09 被阅读0次

1.翻转链表

可以使用哑结点的技巧

中心思想是:

1)创建哑结点new ListNode(0);
2)遍历head,每次遍历,将哑结点的next先保存下来
3)将哑结点的next指向目前遍历到的head值的节点
4)再将这次遍历临时保存下来的哑结点的next节点,重新连接到哑结点的m.next.next = temp
5)直到head为null,遍历完成,m.next即为翻转后的链表


图解.png

模版代码为:

   /**
     * 翻转链表 
     */
    public ListNode revListNode(ListNode head) {
        // 创建哑结点
        ListNode m = new ListNode(0);
        ListNode temp = null;
        while (head != null) {
            // 遍历head,每次遍历,将哑结点的next先保存下来
            temp = m.next;
            // 将哑结点的next指向目前遍历到的head值的节点
            m.next = new ListNode(head.val);
            head = head.next;
            // 再将这次遍历临时保存下来的哑结点的next节点,重新连接到哑结点的m.next.next = temp
            m.next.next = temp;
        }
        // 直到head为null,遍历完成,m.next即为翻转后的链表
        return m.next;
    }

2.求取链表中的倒数节点

可以使用快慢指针的方法

中心思想是:

1)双指针移动,初始都指向head
2)先将p1移动k位
3)然后才开始移动p2,同时继续移动p1
4)直到p1指向末尾,那么p2将会移动L-k个位置,那么p2此时指向为倒数第k个节点


图解.png

模版代码为:

    /**
     * 快慢指针找到链表的倒数k节点
     */
    public ListNode getNthKNode(ListNode head, int k) {
        ListNode p1 = head, p2 = head;
        while (p1 != null) {
            p1 = p1.next;
            if (k < 1) {
                p2 = p2.next;
            }
            k--;
        }
        return p2;
    }

相关文章

  • 链表一些算法技巧&模版总结

    1.翻转链表 可以使用哑结点的技巧 中心思想是: 1)创建哑结点new ListNode(0);2)遍历head,...

  • 数据结构与算法学习-链表下

    前言 上一篇文章讲了链表相关的概念,这篇主要记录的是和链表相关的算法以及一些写好链表算法代码相关的技巧。 实现单链...

  • 算法--leetcode-283-移动零

    相当于是使用 for 进行交换的一个小技巧的练习,后面会给出一些算法的小技巧,都是总结的一些算法的小技巧。

  • 数据结构与算法第三讲 - 链表

    本讲内容 链表定义和分类链表和数组比较链表操作写链表代码的技巧简单算法题 链表定义和分类 定义:通过指针把零散的内...

  • 算法-链表算法总结

    1 哨兵节点 思路:在单链表中移除或添加头结点 和 其他节点的操作方式是不一样,其实在写代码的时候也会发现,需要单...

  • 单链表

    单链表一些相关的算法集锦,单链表的算法可以提高逻辑能力。 反转链表 最基本的链表的题目,很简单的迭代操作,需要注意...

  • 链表一些算法的总结

    1、链表的定义、创建、插入、查找、删除: 2、两个单链表的第一个公共结点。 方法1:粗暴的办法。 从一个链表的第一...

  • 链表(下):如何轻松写出正确的链表代码?

    链表(下):如何轻松写出正确的链表代码? 总结几个写链表代码的技巧。 一、理解指针或引用的含义 简单。。。。 二、...

  • python链表及算法

    实现了python单向链表及一些算法题

  • 算法(12):位操作

    按位操作是真的复杂,且技巧性很高,特此专门开一篇,来简单讲解。 目录:算法:附录算法(1):递归算法(2):链表算...

网友评论

      本文标题:链表一些算法技巧&模版总结

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