面试中常考的循环问题
一、循环控制
循环不变式(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 必须指向已经反转完成的链表的头,但什么都没有做,已经反转完成链表的头是 N