![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
Leo_Franklin
软件工程专业研究生
展开
-
【剑指offer】刷题 之 用javascript 实现二叉搜索数中寻找第k小的节点(顺便吐槽牛客网的算法判定什么鬼!)
文章目录题目要求解题思路实现代码吐槽一下牛客的算法判定题目要求给定一棵二叉搜索树,请找出其中的第k小的结点。解题思路二叉搜索树的自身结构特点可以通过中序遍历后,得到一个非递减的有序序列,我们存储一下个序列并找到第k-1的位置即可。实现代码/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;} */function KthNode(pRoot, k){ // w原创 2021-02-09 00:12:25 · 406 阅读 · 2 评论 -
【剑指offer】刷题 之 用javascript 实现寻找两个链表的第一个公共节点
文章目录题目描述解题思路上参考代码题目描述输入两个链表,找出它们的第一个公共节点。示例图解题思路有两种情况,一种是两个链表有焦点,一种是没有焦点。此题较为巧妙的解法是利用双指针去走自己的路 和 别人的路。当有公共节点时,分别设置A,B不相交的路程为La,Lb,公共路程为Lc,则A走的总路程为La + Lc +Lb,B走过的路程为Lb + Lc + La 所以走过的路是一样的必然在c1点相遇,此时返回他们的指针即可。而没有相交的情况下,他们只是少了Lc,虽然不会相遇,但是必然同时指向NULL。原创 2021-02-03 21:35:08 · 155 阅读 · 0 评论 -
【剑指offer】刷题 之 用javascript 实现寻找链表中环的入口结点
文章目录题目描述一、解题思路二、直接上参考代码总结题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。此处借助leetcode上大佬的作图以便大家理解,该图的原地址在下文中已给出。一、解题思路使用双指针,一个快指针 fast 每次移动两个节点,一个慢指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。(就好像运动会5000米跑圈,大家虽然一个起点,但是跑的慢的人会被跑的最快的那个人套圈)至于怎样找到入口节点的证明建议大家参考原创 2021-02-01 22:18:57 · 254 阅读 · 0 评论 -
【剑指offer】刷题 之 用javascript 实现删除链表中重复的节点
文章目录一、题目描述二、预设数据结构三、知识点四、解题思路五、根据题意画图如下六、实现代码一、题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。二、预设数据结构function ListNode(x){ this.val = x; this.next = null;}三、知识点双指针链表删除操作原创 2021-01-31 22:54:55 · 317 阅读 · 4 评论