zoukankan      html  css  js  c++  java
  • 代码精简技巧

    前言:

      记录看到大神们精简技代码的技巧。

    var swapPairs = function(head) {
        // 1. 确认 head 大于等于两个,否则返回;
        if (!head || !head.next) return head;
        // 2. 新建链表哨兵头并创建指针curr;
        let res = new ListNode(null);
        res.next = head;
        let prev = res;
        // 3. 循环开始
        //    3.1 走两步,存为fst, snd;
        //    3.2 哨兵->snd, fst->snd.next, snd->fst;
        //    3.3 推进 curr = curr.next.next;
        while (prev.next && prev.next.next) {
            let [fst, snd] = [prev.next, prev.next.next];
            [prev.next, fst.next, snd.next] = [snd, snd.next, fst];
            prev = prev.next.next;
        }
        // 4. 返回res.next;
        return res.next;
    };
    var swapPairs = function(head) {
        // 自递归思路:
        //    1. 确认head大于等于两个,否则返回
        if (!head || !head.next) return head; 
        //    2. 获得第二个节点;
        let next = head.next;
        //    3. 第一个节点指向第三个节点, 传入第三个节点开始递归,获得已排序的链表;
        head.next = swapPairs(next.next);
        //    4. 第二个节点指向第一个节点
        next.next = head;
        //    5. 返回第二个节点;
        return next;
    };
    var swapPairs = function(head) {
        if (!head || !head.next) return head;
        let [fst, snd] = [head, head.next];
        [fst.next, snd.next] = [swapPairs(snd.next), fst];
        return snd;
    };

     

  • 相关阅读:
    PHP开发经常遇到的几个错误
    PHP的Trait
    PHP反射API
    php split 和 explode 的区别
    php判断检测一个数组里有没有重复的值
    PHP serialize 和 JSON 解析与区别
    php 单文件上传
    php 数组 类对象 值传递 引用传递 区别
    六. 网络编程(解决黏包TCP)
    五. 网络编程(UDP 不黏包)
  • 原文地址:https://www.cnblogs.com/TTblog5/p/12521143.html
Copyright © 2011-2022 走看看