题目描述
输入一个链表,反转链表后,输出新链表的表头。
1、使用pre代表head的前一个节点,next代表head的下一个节点。
2、next与head同时向前移动,同时赋值head给pre(完成翻转)。
3、当head==null,代表已经到达目的地,完成翻转。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null)return null;
ListNode pre = null;
ListNode next =null;
while(head!=null){
next = head.next;// 记录下一个节点
head.next = pre; // 纸上上一节点,完成翻转
// pre与head同时向前走
pre = head;
head = next;
}
return pre;
}
}
时间复杂度:O(n);
空间复杂度:O(1);