首页 > 其他分享 >[刷题技巧] 链表刷题技巧汇总

[刷题技巧] 链表刷题技巧汇总

时间:2023-12-13 09:35:15浏览次数:32  
标签:例如 结点 技巧 链表 指针 节点 刷题

链表的算法题中很常见的技巧:

  • 添加虚拟头结点,即dummy结点。当需要创造一条新链表的时候,可以使用虚拟头节点简化边界情况的处理。
    • 例如:LeetCode21. 合并两个有序链表,让两条有序链表合并成一条新的有序链表,需要创造一条新的链表。
    • 例如,LeetCode86. 分隔链表,把一条链表分解成两条链表,也是在创造新的链表。
  • 让一个指针先走几步,然后让第二个指针和第一个指针同时走,直至第一个指针为NULL。
    • 还是添加一个dummy结点,方便操作
    • 例如:LeetCode19. 删除链表的倒数第N个结点
    • 例如:LeetCode876. 链表的中间结点
    • 例如:LeetCode19. 删除链表的倒数第N个结点,获得单链表的倒数第N+1个结点
  • 如果操作过程中会导致头节点变化,则也应该设置一个dummy头节点保证头节点不会改变。
    • 例如:LeetCode24. 两两交换链表中的节点
    • 例如:LeetCode25. K个一组翻转链表
    • 例如:LeetCode92. 反转链表II

标签:例如,结点,技巧,链表,指针,节点,刷题
From: https://www.cnblogs.com/keyongkang/p/17898324.html

相关文章

  • 如何判断链表是否存在环?
    大家好,今天我们来聊一聊如何判断链表是否存在环。如果你是一个链表的小白,听到“环”这个词可能会感到一头雾水。别担心,我会用通俗易懂的语言来解释这个问题,并带大家看一段代码演示。首先,我们要了解什么是链表。链表是一种数据结构,由一系列节点组成,每个节点都有一个值和一个指向下一......
  • 包装效果图渲染技巧:怎么用云渲染省钱、省时间
    在今天这个市场竞争白热化的时代,一个产品的包装设计往往决定了它在架上是否能够脱颖而出。因此,品牌在推向市场前精心设计的包装效果图显得尤为重要。在这里,我们将探究包装效果图渲染的关键性、渲染技巧及云渲染技术如何在提升渲染品质与降低成本上发挥其作用。包装效果图渲染的......
  • 2023最新中级难度MyBatis面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度MyBatis面试题合集问:MyBatis与Hibernate有何区别?好的,我会尽力回答这个问题。首先,MyBatis和Hibernate都是Java中的持久化框架,用于处理数据库操作。在理解和使用难度上,Hibernate的难度通常会大于MyBatis。因为Hibernate的功能......
  • Leetcode刷题day12-二叉树.前中后序遍历
    递归法实现前.中.后序遍历代码随想录(programmercarl.com)解题思路前序遍历:头->左->右中序遍历:左->头->右后序遍历:左->右->头递归法实现流程:1.定义递归函数;2.寻找递归终止条件;3.设计单层递归模块classSolution(): def__init__(self,val=0,left=None,right=None): sel......
  • 2023最新高级难度MyBatis面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-高级难度MyBatis面试题合集问:请详细解释MyBatis的执行原理,包括SQL会话、映射器和执行器的作用。MyBatis的执行原理主要包括以下几个步骤:SQL会话:MyBatis会话是数据库连接的主要容器,用于存储和管理数据库连接。当一个应用程序首次请求......
  • Leetcode刷题day11-栈.滑窗最大值.出现次数前K的元素
    239.滑动窗口最大值239.滑动窗口最大值-力扣(LeetCode)给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。示例1:输入:nums=[1,3,......
  • 刷题记录1
    写leetcode242.有效的字母异位词,碰到两个问题1、map更新数据2、java.lang.NullPointerException:Cannotinvoke"java.lang.Integer.intValue()"becausethereturnvalueof"java.util.Map.get(Object)"测试通过的代码publicbooleanisAnagram(Strings,Stringt)......
  • [LeetCode Hot 100] LeetCode24. 两两交换链表中的节点
    题目描述思路:创建dummy节点,令dummy.next=head。令cur表示当前到达的节点,初始时cur=dummy。每次需要交换cur后面的两个节点。如果cur的后面没有节点或者只有一个节点,则没有更多的节点需要交换,因此结束交换。否则,获得cur后面的两个节点node1和node2,通过更新节点的指针关系......
  • [LeetCode Hot 100] LeetCode148. 排序链表
    题目描述思路一:堆排序、小顶堆定义一个最小堆将链表的所有节点放入一个最小堆中直接用队列弹出的最小值依次覆盖掉原链表的值方法一:/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}......
  • [LeetCode Hot 100] LeetCode138. 随机链表的复制
    题目描述思路一:添加"小弟"根据遍历到的原节点创建对应的新节点,每个新创建的节点是在原节点后面。原节点i的随机指针(如果有的话),指向的是原节点j,那么新节点i的随机指针,指向的是原节点j的next最后将两个链表分开,再返回新链表就可以思路二:使用哈希表首先创建一个哈希表......