LeetCode206
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
1. 建立虚拟头结点辅助反转
在分析链表插入元素的时候,会发现如何处理头结点是个比较麻烦的问题,为此可以先建立一个虚拟的结点dummyHead,这样可以很好的简化我们的操作。如下图所示,如果我们将链表
{1 -> 2 -> 3 -> 4 – > 5}进行反转,我们首先建立虚拟结点dummyHead,并令dummyHead.next = node(1)。
接下来我们每次从旧的链表拆下来一个结点接到dummyHead后面,然后将其他线调整好就可以了。
public ListNode reverseList(ListNode head) {
ListNode dummyHead = new ListNode(-1);
ListNode current = head;
while (current != null) {
ListNode nextTemp = current.next;
current.next = dummyHead.next; // 对应第一步
dummyHead.next = current;// 对应第二步
current = nextTemp;
}
return dummyHead.next;
}
2. 直接操作链表进行反转
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
while (cur != null) {
ListNode nextTemp = cur.next;
服务器托管网 cur.next = pre;
服务器托管网 pre = cur;
cur = nextTemp;
}
return pre;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
【直播预告】上云 vs 下云:降本增笑?割韭菜? 视频云大模型算法「方法论」。 刘国栋|演讲者 在AI技术发展如火如荼的当下,大模型的运用与实践在各行各业以千姿百态的形式展开。音视频技术在多场景、多行业的应用中,对于智能化和效果性能的体验优化有较为极致的要求。…