牛客网剑指Offer题解
文章平均质量分 58
网址:https://www.nowcoder.com/exam/oj/ta?page=1&tpId=13&type=13
注意,该书涉及大量数据结构的知识,没学过的强烈建议过一遍数据结构再来
技术卷
硕士在读
展开
-
牛客网剑指Offer-链表篇-JZ18 删除链表的节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。删除节点算法虽然很简单,但要注意删除头节点的情况,如果链表只有一个头节点,返回空指针,否则返回头节点后继。原创 2024-09-15 21:13:18 · 193 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ76 删除链表中重复的结点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。题目一看就属于有序表删减的算法,即当前节点的值如果和它的后继的值相同,则往后找,直到节点值不重复为止。但其实这题是有陷阱的:重复的结点不保留。这点如果用空间O(n)的算法会比较麻烦,其实空间O(1)的算法是不难想到的,只是要注意一种情况:开头有重复节点。为了解决这点,我的方法是原创 2024-09-15 20:53:47 · 352 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ35 复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。官方题解的方法都挺麻烦的,我这里只给一种方法,就是用哈希表,但比官方的简洁。为什么要用这个呢?因为哈希表是最容易想到的方法,而且对于题目和开发工作足够了,搞竞赛的才需要琢磨一下更巧妙的方法。接下来就深入解析一波。原创 2024-09-15 11:33:23 · 418 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ22 链表中倒数最后k个结点
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。方法一:倒数第k个节点,反过来就是正数第n-k+1个节点,方法二:快慢指针法,定义快指针先走k个节点,慢指针从头节点开始走原创 2024-09-14 21:24:07 · 206 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ23 链表中环的入口结点
给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。题目虽然标的中等难度,但如果深入分析,可能达到较难级别。现在我就带大家深入分析下:题目其实要分为两个步骤,一个是判环,一个是找到环入口。原创 2024-09-14 12:45:10 · 776 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ52 两个链表的第一个公共结点
输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。设两个指针,分别扫描两个链表,统计各自长度。然后根据长度差,较长链表的指针先走一段长度差,最后两个指针平行移动,当两个指针相同时即公共部分的头节点(无论是否为空)。原创 2024-09-13 10:42:53 · 498 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ25 合并两个排序的链表
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。经典的数据结构习题,各种教材课程几乎都会讲,不作赘述原创 2024-09-13 07:49:52 · 201 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ24 反转链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。设两个指针,一个是当前节点p,用于链接之前链表的头节点head,一个是当前节点的下一节点q,用于p的移动,更新其实涉及三个指针:head,p,q。然后注意空节点的情况就行了原创 2024-09-13 07:43:25 · 224 阅读 · 0 评论 -
牛客网剑指Offer-链表篇-JZ6 从尾到头打印链表
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。题目并未对时空复杂度作限制,直接递归即可原创 2024-09-13 07:37:47 · 261 阅读 · 0 评论