飞道的博客

一起刷 leetcode 之反转链表

304人阅读  评论(0)

题目

这道题是 leetcode 的 206 题

给定一个链表,然后将其反转后输出

例如:

输入:1->2->3->4->5->null

输出:5->4->3->2->1->null

对应的题目链接 反转链表

 

解析

这道题的难度属于简单,思想挺简单,但想写对也不是很容易

我这里给出的方法是迭代法

遍历链表,将当前节点的 next 指针改成指向前一个元素,这里需要提前存储前一个元素。在更改引用前,先获取下一个节点,然后把 pre 和 cur 都前进一步,最后返回新的头节点

时间复杂度:O(n)

空间复杂度:O(1)


  
  1. public ListNode reverseList(ListNode head) {
  2. ListNode pre = null;
  3. ListNode cur = head;
  4. while (cur != null) {
  5. // 记录当前节点的下一个节点
  6. ListNode temp = cur.next;
  7. // 将当前节点指向 pre
  8. cur.next = pre;
  9. // pre 和 cur 都前进一步
  10. pre = cur;
  11. cur = temp;
  12. }
  13. return pre;
  14. }


转载:https://blog.csdn.net/dam454450872/article/details/104735684
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场