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;
    };

     

  • 相关阅读:
    JSON.parse与eval
    加密算法
    asp.net权限管理
    asp.net登录状态验证
    U3D Debug.log的问题
    yield(C# 参考)
    U3D 动态创建Prefab的多个实例
    U3D事件系统总结
    C#事件与接口
    C#泛型委托,匿名方法,匿名类
  • 原文地址:https://www.cnblogs.com/TTblog5/p/12521143.html
Copyright © 2011-2022 走看看