题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
解法一 新建dummy Node
class Solution {
public ListNode reverseList(ListNode head) {
// 如果头节点为空或者只有一个节点,反转了也是本身
if(head == null || head.next == null) return head;
// 新建一个dummy node 来作为虚假的head前置节点
ListNode dummy = null;
ListNode cur = head;
ListNode prev = dummy;
while(cur != null){
ListNode temp = cur.next;
cur.next = prev;
prev = cur;
cur = temp;
}
return prev;
}
}
时间复杂度:O(n)
空间复杂度: O(1)