这篇文章上次修改于 1108 天前,可能其部分内容已经发生变化,如有疑问可询问作者。 >给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 [leetCode206链接](https://leetcode-cn.com/problems/reverse-linked-list/) #### 示例 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] #### 思路分析 1. 这类题我的想法是:一定要“聚焦”,就是考虑最少的元素进来,这也是数学归纳法的精髓。这里我们只考虑两个元素,当前元素head和前一个元素prev。我们归纳起来,只要把head.next 指向prev。然后后移head和prev--就可以整个反转链表 2. 要考虑链表的的断开,我们把head.next指向prev后,head和后一个元素就断开了。那么我们用一个临时变量next记录住下一个元素 3.最后要考虑结束条件,如果临时指针next是null表示到了结尾,那么head就是新的head。 #### 代码 ``` java ListNode reverseList(ListNode head) { ListNode newHead = null; ListNode prev = null; while (head != null){ //处理断开 ListNode next = head.next; //结尾处理 if(next == null){ newHead = head; } // 聚焦----head 指针指向前一个 head.next = prev; //两个指针后移 prev = head; head = next; } return newHead; } ```
没有评论