力扣-链表
啊哈~铜豌豆
中南大学2023级计算机专业研究生
展开
-
力扣-234. 回文链表-不同方法对比代码超级简单
【代码】力扣-234. 回文链表-不同方法对比代码超级简单。原创 2024-05-18 22:32:46 · 367 阅读 · 0 评论 -
力扣141. 环形链表-不同方法对比代码超级详细
思路及算法最容易想到的方法是遍历所有节点,每次遍历到一个节点时,判断该节点此前是否被访问过。具体地,我们可以使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。重复这一过程,直到我们遍历完整个链表即可。复杂度分析时间复杂度:O(N),其中 N 是链表中的节点数。最坏情况下我们需要遍历每个节点一次。空间复杂度:O(N),其中 N 是链表中的节点数。原创 2024-05-18 22:30:54 · 421 阅读 · 0 评论 -
力扣-876. 链表的中间结点-快慢指针-不同方法对比代码超级详细
这道题最朴素的做法是,先遍历一次,计算链表的长度,进而计算链表中间结点的下标(注意偶数结点的时候,得到的是中间的第二个结点),然后再遍历一次,来到所要求结点的位置。缺点:必须先遍历完整个链表,然后才可以「干正事」,再遍历到一半,找到中间结点;在链表的长度很长的时候,这种方法之前的等待会很久。原创 2024-05-18 22:28:04 · 246 阅读 · 0 评论 -
力扣-21.合并两个有序链表-代码说明超详细
● 先判断两个链表头节点存在空时的情况● 找到两个头节点中数值较小的一个作为最终返回的头节点head● cur1为头节点的next结点● cur2为数据较大的头节点中的第一个节点● pre节点初值指向head节点,(由pre来串接两个链表)● 在两个头节点都不为空情况下,进行下面的循环:○ pre指向cur1与cur2中较小的节点(由pre来串接两个链表)○ 随后cur1与cur2中较小的节点后移进行更新,另一个位置不变。原创 2024-05-18 22:25:26 · 190 阅读 · 0 评论 -
力扣-25.K 个一组翻转链表-代码超级详细
为了将第一次 K 组节点逆序的操作也改写到 while 循环中,可以设置一个哨兵节点(dummy node),让这个节点的 next 指向链表的头节点 head,把这个哨兵节点当做上一组数据的结尾节点lastEnd。原创 2024-05-18 22:22:11 · 135 阅读 · 0 评论 -
力扣206.单链表的反转-多方法对比超级详细
○ 初始状态时,新的链表头newhead为NULL,temp读取到原链表的节点的数据后next指向newhead(即temp的next指向NULL)○ 经历过几次迭代后,新的链表头newhead后面连接着一大堆的节点,temp读取到原链表的节点的数据后next指向新链表的头节点newhead。● temp每读取一次数据后,temp的next将指向新链表的头部newhead,即新的节点temp插在了新链表的头部(头插)○ 在迭代几次后,pre为反转后链表的头节点,原链表的head指向反转后的链表头节点;原创 2024-05-18 22:17:05 · 409 阅读 · 0 评论