龙空技术网

LeetCode :206.反转链表

码农老爹 109

前言:

而今朋友们对“链表反转 leetcode”大约比较讲究,小伙伴们都想要剖析一些“链表反转 leetcode”的相关文章。那么小编也在网摘上收集了一些对于“链表反转 leetcode””的相关内容,希望朋友们能喜欢,兄弟们快快来了解一下吧!

题目:

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 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

来源:力扣(LeetCode)

链接:

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题:

1.定义一个新的链表,遍历需反转的链表,将头节点插入新链表,实现反转,这种解法比较简单容易理解,但是空间复杂度比较高,每次都生成了新的节点;

public ListNode reverseList(ListNode head) {     if(head == null || head.next == null){             return head;        }        ListNode curr = new ListNode();        while (head != null) {            //生成新节点,插入链表头部            curr.next = new ListNode(head.val,curr.next);            head= head.next;        }        return curr.next;            }

2.利用指针,移动指针,实现反转;

public ListNode reverseList(ListNode head) {              if(head == null || head.next == null){             return head;        }       ListNode cur = head;       ListNode temp = null;       while(head.next != null){           temp= head.next.next;           head.next.next = cur;           cur = head.next;           head.next = temp;       }       return cur;            }

标签: #链表反转 leetcode