代码随想录第三天

专题:链表

题目:移除链表元素

题意:删除链表中等于给定值 val 的所有节点。

示例 :
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]

解题思想:

 我们为了统一操作,我们给链表添加一个虚拟头结点dummyhead,这样就统一了处理头结点head就和处理其他的节点方式。让指针指向虚拟头结点,然后从前往后遍历链表,遇到val值相等的元素,就直接把它移除了。

细节注意: 

因为我们是删除节点,所以创建的cur指针,指向的是dummyhead,而不是dummyhead->next;  还有分清楚dummyhead->next = head的含义 和  head = dummyhead->next的含义;

dummyhead->next = head;指的是虚拟头结点的next指向head。此时head是确定的位置。dummyhead->next 不确定的指针(创建虚拟头结点是使用)。 而 head = dummyhead->next;指的是让head指针指向dummyhead->next;此时的head是不确定的。而dummyhead->next是确定的(最后完成链表的创建之后,将新链表赋给head)。总的来说,就是让左边不确定的指针,指向右边确定的指针。或者可以理解为,把右边确定的指针赋值给左边不确定的指针。

代码实现:

 

 题目:设计链表

解题思想:

首先是一个类,里面包含了链表结点(包含 数值val,结点指针next,结点构造函数),类的私有成员变量(虚拟头结点指针dummyhead,结点数目size)然后具体的方法有,初始化链表。得到第index个元素,头插,尾插,头删,尾删,在第index个位置插入,在第index个位置删除。

细节注意:

方法里面基本都用到了虚拟头结点,如果涉及到删除,添加元素。那我们在初始化指针cur的时候,我们都是让cur指向dummyhead(因为删除,添加都需要在它的前一个位置,对下一个位置的元素进行操作);如果只是得到某个位置的元素,不涉及添加,删除时,我们在初始化cur时,让他指向 dummyhead->next(查看的话,直接可以对当前的元素进行操作); 

并且对于在某个位置插入,删除时,边界的把握很重要。 删除时:index 不能小于0 ,index不能大于(size -1)  即(index < 0 || index > (size-1)){return -1}退出;因为0是第一个元素下标,(size-1)是最后一个元素的下标。但是在插入的时候,if(index < 0 || index >size) {return -1} ,size位置是链表有效元素后的第一个无效位置,在那个位置可以插入。这个很重要!!! 还有index的位置怎么计算??(dummyHead虚拟头节点它的下标是(-1),head头结点的下标是(0),然后下一个结点的下标(1)......(2)......)我们的代码的实现也是根据这个顺序;还有要注意的,每添加一个元素,或者删除一个元素,一定要size++或者size--;

代码实现:

 

 题目:翻转链表

题意:反转一个单链表。

示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

解题思想:

 我们使用三指针的方法。pre指向nullptr, cur指向 head ,tmp ; 然后先让tmp指向cur->next;再让cur 指向pre,完成当前这个结点的逆转。然后更新pre 和cur  都指向下一个新的结点,继续循环。直到cur为空退出循环。

细节注意:

 循环条件是判断cur; 然后cur pre tmp 的更新顺序。一定要弄清楚!!!!

首先一定是先更新 pre 再是 cur 。再完成一个结点的逆转之后。我们先更新pre = cur;再更新cur = tmp;这样才能都往下走一步。如果先更新cur 的话,那么pre就不知道指向哪里,不可以。返回的时候,返回的是pre指针。pre指针是新链表头结点。一定要深刻理解!!

代码实现:

 

### 回答1: 《代码随想录最强八股文pdf 第三版》是一本关于编程思维和技巧的重要参考书。它涵盖了广泛的主题,包括算法、数据结构、编程语言等方面的知识和技能。 该书以简洁明了的语言和实用的例子展示了各种编程题目和解题方法。通过学习和实践,读者可以提高自己的编程水平和解题能力。除了传统的算法和数据结构,该书还包含了一些实用的编程技巧和优化方法,帮助读者更高效地解决问题。 与其他类似的书籍相比,该书的优势在于其深入浅出的讲解和丰富的实例。每个章节都以问题引入,然后用多种方法解决问题,并给出详细的解析和步骤。读者可以根据自己的理解和需求选择合适的方法,并根据实例练习和巩固所学内容。 此外,《代码随想录最强八股文pdf 第三版》还提供了一些编程题目和练习,帮助读者巩固所学知识并提升编程能力。这些题目覆盖了各个难度级别,从初级到高级,适合不同水平的读者。 总之,《代码随想录最强八股文pdf 第三版》是一本综合性的编程指南,适合对算法和编程有兴趣的读者。它不仅提供了理论知识,还给出了实际问题的解决方法。通过学习和实践,读者可以提高自己的编程水平,解决复杂的问题。 ### 回答2: 《代码随想录最强八股文pdf 第三版》是一本关于编程学习和实践的书籍。它的第三版还增加了更多的内容和例子,使读者能够更全面地了解编程知识和技巧。 这本书的主要特点是将编程知识和实践以八股文的形式呈现,结构清晰、逻辑严谨。通过阅读这本书,读者可以系统地学习和掌握各种编程语言的基础知识、算法和数据结构。 《代码随想录最强八股文pdf 第三版》还提供了大量的实例和实践案例,读者可以通过模仿和练习来巩固自己的编程能力。这些实例涵盖了常见的编程问题和解决方法,可以帮助读者更好地理解和应用所学的知识。 此外,这本书还介绍了一些编程技巧和经验,如代码调试、性能优化等,这些内容对于读者提高编程水平和解决实际问题非常有帮助。 总之,《代码随想录最强八股文pdf 第三版》是一本对于编程初学者和有一定编程基础的读者都很有价值的书籍。它通过八股文的形式全面、系统地介绍了编程知识和实践,帮助读者提高编程水平和解决实际问题的能力。如果你对编程感兴趣或是希望提高你的编程能力,这本书是一本值得推荐的读物。 ### 回答3: 《代码随想录最强八股文pdf 第三版》是一本关于编程技巧和经验分享的书籍。它是作者针对编程学习者和开发人员的需求,整理出的一套实用的编码思路和技巧的集合。 这本书的第三版相较于之前的版本,进行了一些更新和改进。作者在这一版中基于最新的编程语言和开发工具进行了案例解析和实战演练,使读者能够更好地理解和应用其中的知识。 《代码随想录最强八股文pdf 第三版》内容丰富,涵盖了各种编程语言和开发领域的典型问题和解决方案。书中详细介绍了常见的编程范式、算法和数据结构等基础知识,并结合实际案例讲解了如何运用这些知识进行编码和问题解决。此外,还包括了一些高级主题,如并发编程、网络编程和性能优化等,帮助读者更好地理解和应用专业知识。 这本书的特点之一是提供了大量的实例代码和实用技巧。通过对代码的解析,读者可以深入理解代码的运行原理和实现逻辑,同时也可以学习到一些优秀的编码风格和技巧。 总之,《代码随想录最强八股文pdf 第三版》是一本非常实用的编程技巧和经验分享的书籍。它不仅能够帮助读者提高编码能力和解决问题的能力,同时也能够帮助他们理清编程思路和掌握重要的编程概念。无论是初学者还是有经验的开发者,都可以从这本书中获得很多有价值的知识。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值