Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

206. 反转链表 #60

Open
webVueBlog opened this issue Sep 5, 2022 · 0 comments
Open

206. 反转链表 #60

webVueBlog opened this issue Sep 5, 2022 · 0 comments

Comments

@webVueBlog
Copy link
Owner

206. 反转链表

Description

Difficulty: 简单

Related Topics: 递归, 链表

给你单链表的头节点 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

**进阶:**链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

Solution

Language: JavaScript

/**
 * 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}
 */
// 假设链表为 1→2→3→∅,我们想要把它改成 ∅←1←2←3。
// 迭代
var reverseList = function(head) {
    let prev = null
    let curr = head
    while (curr) {
        [curr.next, prev, curr] = [prev, curr, curr.next]
    }
    return prev
};

// 递归
// var reverseList = function(head) {
//     if (head === null || head.next === null) {
//         return head
//     }

//     const nextHead = reverseList(head.next)
//     head.next.next = head
//     head.next = null
//     return nextHead
// }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant