网站建设 武讯科技,免费的seo网站膝,网站开发与建设个人总结,wordpress主题微信验证码目录 题目描述#xff1a;206. 反转链表#xff08;简单#xff09;题目接口解题思路代码 PS: 题目描述#xff1a;206. 反转链表#xff08;简单#xff09;
给你单链表的头节点 head #xff0c;请你反转链表#xff0c;并返回反转后的链表。
LeetCode做题链接206. 反转链表简单题目接口解题思路代码 PS: 题目描述206. 反转链表简单
给你单链表的头节点 head 请你反转链表并返回反转后的链表。
LeetCode做题链接LeetCode-反转链表
示例 1
输入head [1,2,3,4,5]
输出[5,4,3,2,1]示例 2
输入head [1,2]
输出[2,1]示例 3
输入head []
输出[]提示
链表中节点的数目范围是 [0, 5000]
-5000 Node.val 5000进阶 链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题
题目接口
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode reverseList(ListNode head) {}
}解题思路
双指针迭代
1.申请两个指针第一个指针叫 pre最初是指向 null 的。2.第二个指针 cur 指向 head然后不断遍历 cur。3.每次迭代到 cur都将 cur 的 next 指向 pre然后 pre 和 cur 往下一个结点移动。 这里注意pre往下一个移动可以pre cur但是cur往下一个结点移动得借助一个tmp中间变量这个变量一开始就得保存cur.next的值。4.都迭代完了(cur 变成 null 了)pre 就是最后一个节点了。
代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode reverseList(ListNode head) {ListNode pre null;ListNode cur head;ListNode tmp null;while (cur ! null) {// 保存记录下一个节点的位置tmp cur.next;// 最新要转移的节点指向pre一次的时候pre为null下一次就是上一次转移过期的节点了cur.next pre;// pre和cur都往下一个节点移动 pre cur;cur tmp;}return pre;}
}成功
PS:
感谢您的阅读如果您觉得本篇文章对您有所帮助请给予博主一个赞喔~