LeetCode每日一练【24】

Swap Nodes in Pairs

我的提交

介绍

罗里吧嗦

思路

  1. 循环遍历链表
  2. 交换两个节点
  3. 找到下两个节点,继续进行交换

代码

/*
 * @Author: fox
 * @Date: 2022-05-05 08:01:04
 * @LastEditors: fox
 * @LastEditTime: 2022-05-05 10:04:31
 * @Description: https://leetcode.com/problems/swap-nodes-in-pairs/
 */

/**
 * @description: Runtime: 84.28%  Memory Usage: 50.14%
 * @param {*}
 * @return {*}
 */
class ListNode {
    constructor (val, next) {
        this.val = (val === undefined ? 0 : val);
        this.next = (next === undefined ? null : next);
    }
}

const swapPairs = (head) => {
    if (!head || head.length === 0) return null;
    if (head.length === 1) return head[0];

    const listnode = new ListNode(0, head);
    let pre = listnode;
    let cur = pre.next.next;

    while (pre && cur) {
        // 1. 节点交换
        pre.next.next = cur.next;
        cur.next = pre.next;
        pre.next = cur;

        // 2. 移动节点
        if (!cur.next.next || !cur.next.next.next) break;
        pre = cur.next;
        cur = pre.next.next;
    }
    return listnode.next;
}
posted @ 2022-05-05 10:08  白い故雪  阅读(22)  评论(0)    收藏  举报