【leetcode】《程序员面试金典》刷题总结(更新至2.28)

这篇博客探讨了链表在面试中常见的问题,如获取倒数第k个元素、找到链表中间节点、判断环的存在及其长度等。通过双指针技巧解决这些问题,并介绍了链表的插入、删除和尾部添加等基本操作。此外,还提到了链表相交的检测方法和栈化为队列的实现。
摘要由CSDN通过智能技术生成
  1. 下面是链表相关

  2. 一般传入的是链表的头node而不是一个链表,然而知道了head其实也就是知道了链表

  3. 记住一些常用的链表操作:删除,插入,遍历(w hile),注意下面第一个是参数仅传入node在这里插入图片描述
    在这里插入图片描述

  4. 面试的时候经常碰见诸如获取倒数第k个元素(双指针间隔)获取中间位置的元素(快慢指针),判断链表是否存在环(快慢指针相追,相差一),判断环的长度(快慢指针)等和长度与位置有关的问题。这些问题都可以通过灵活运用双指针来解决。

  5. 如果存在环,如何判断环的长度呢?方法是,快慢指针相遇后继续移动,直到第二次相遇。两次相遇间的移动次数即为环的长度。

  6. 链表的尾添加(重要):注意添加指针往后移动一位在这里插入图片描述

  7. 快慢指针返回一半链表:这样slow就是后半个链表的head在这里插入图片描述 7. 头插法返回反转链表在这里插入图片描述

  8. 检查链表相交:a+b-c,b+a-c 长度必定相同,直接遍历两者

  9. 实现栈化为队列,用两个栈,先让第一个倒到第二个,第二个pop

  10. 最小元素位于栈顶:思路如下

  11. 判断图的任意两点是否有通路 :

  12. 最小高度树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值