Java面试--面试中常考的循环问题

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试中常考的循环问题

一、循环控制

循环不变式(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 必须指向已经反转完成的链表的头,但什么都没有做,已经反转完成链表的头是 Nu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值