LeetCode206_206. 反转链表
一、描述
给你单链表的头节点 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
二、题解
方法:头部定义一个虚拟节点,然后放原有链表中的数据。
/**
* 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) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = null;
ListNode tempNode = null;
while (head != null) {
//两步骤:1、从老的头节点中移除 2、添加到新的头节点
//给tempNode从原有head指向链表中删除
tempNode = head;
head = head.next;
//给tempNode放到新的头节点的头部,然后给新的头节点往前移动
tempNode.next = newHead;
newHead = tempNode;
}
return newHead;
}
}
LeetCode 200. 岛屿数量
LeetCode 201. 数字范围按位与
LeetCode 202. 快乐数
LeetCode 203. 移除链表元素
LeetCode 204. 计数质数
LeetCode 205. 同构字符串
LeetCode 206. 反转链表
LeetCode 207. 课程表
LeetCode 208. 实现 Trie (前缀树)
LeetCode 209. 长度最小的子数组
LeetCode 210. 课程表 II
声明:
题目版权为原作者所有。文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。
By luoyepiaoxue2014
B站: https://space.bilibili.com/1523287361 点击打开链接
微博: http://weibo.com/luoyepiaoxue2014 点击打开链接