关于javascript:Day-64100-数据结构链表6反转链表

34次阅读

共计 741 个字符,预计需要花费 2 分钟才能阅读完成。

(一)需要

链表除了增删改查,今儿的是反转链表

(二)反转链表

1、问题形容

给你单链表的头节点 head,请你反转链表,并返回反转后的链表。

 输出:head = [1,2,3,4,5]
输入:[5,4,3,2,1]

2、思路:

循环遍历扭转每一个节点的指向;

请记住,彩色结点 23 是原始的头结点。

  1. 首先,咱们将彩色结点的下一个结点(即结点 6)挪动到列表的头部:

  1. 而后,咱们将彩色结点的下一个结点(即结点 15)挪动到列表的头部:

  1. 彩色结点的下一个结点当初是空。因而,咱们进行这一过程并返回新的头结点 15。

3、代码

 * Definition for singly-linked list.
 * function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
  let pre = null
  let cur = head
  while(cur){
    const next =cur.next
    cur.next = pre // 把以后点的下一个坐标给到先前的节点
    pre = cur // 把以后的节点给到先前的节点对象
    cur = next // 把下一个对象给到以后对象
  }
  return pre // 最初一个是 null,所以最初一个节点是上一个节点
};

空间复杂度将是 O(1)
工夫复杂度将是 O(n)

以上

参考链接

https://leetcode.cn/leetbook/…

写在最初的话

学习路上,经常会懈怠

《有想学技术须要监督的同学嘛~》
https://mp.weixin.qq.com/s/Fy…

正文完
 0