面试中常考的循环问题
一、循环控制
循环不变式(loop invariant)

循环书写方法
1.定义循环不变式,并在循环体每次结束后保持循环不变式
2.先一般、后特殊
3.每次 必须 向前推进循环不变式中涉及的变量值
4.每次推进的规模必须为 1
例 1.链表反转

步骤:
1.定义循环不变式
【在链表中间"切一刀",循环进行到一半、切在 3 和 4 之间,循环了3次,已经将1、2、3这几个节点处理完毕了,4、5还没有动,这就是循环,前几个节点处理完毕后,形态如下图所示】

2.newHead 指向反转成功的链表、currentHead 指向还没有反转的链表

3.将 newHead 和 currentHead 向前推进 1 ;

4. newHead 必须指向已经反转完成的链表的头,但什么都没有做,已经反转完成链表的头是 Null,故 newHead 指向&n

本文探讨了Java面试中常考的循环问题,重点讲解了如何使用循环不变式进行链表反转。首先定义了循环不变式,并强调了在循环体结束后保持不变的重要性。接着,通过一个链表反转的例子详细解释了如何推进循环不变式,以及在链表中删除节点的具体操作,包括处理头节点特殊情况的方法。最后提到了代码实现和输出结果。
最低0.47元/天 解锁文章
171万+

被折叠的 条评论
为什么被折叠?



