ARTS-4

ARTS

也就是 Algorithm、Review、Tip、Share 简称ARTS

  1. 每周至少做一个 leetcode 的算法题
  2. 阅读并点评至少一篇英文技术文章
  3. 学习至少一个技术技巧
  4. 分享一篇有观点和思考的技术文章

Algorithm

swap-nodes-in-pairs

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

1
给定 1->2->3->4, 你应该返回 2->1->4->3.
  1. 循环,个人感觉要比递归循环清晰一点

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    /**
    * Definition for singly-linked list.
    * public class ListNode {
    * int val;
    * ListNode next;
    * ListNode(int x) { val = x; }
    * }
    */
    class Solution {
    public ListNode swapPairs(ListNode head) {
    ListNode pre = new ListNode(0);
    // 缓存 pre
    ListNode savePre = pre;
    pre.next = head;
    while (pre.next != null && pre.next.next != null) {
    // 声明 cur & next
    ListNode thisNode = pre.next;
    ListNode nextNode = thisNode.next;

    // 替换逻辑 cur.next, next.next = next, cur
    pre.next = nextNode;
    thisNode.next = nextNode.next;
    nextNode.next = thisNode;
    pre = thisNode;
    }
    // 返回 head
    return savePre.next;
    }
    }
  2. 递归

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /**
    * Definition for singly-linked list.
    * public class ListNode {
    * int val;
    * ListNode next;
    * ListNode(int x) { val = x; }
    * }
    */
    class Solution {
    public ListNode swapPairs(ListNode head) {
    // 终止条件
    if (head == null || head.next == null) {
    return head;
    }
    // 替换逻辑 cur.next, next.next = next, cur
    ListNode next = head.next;
    head.next = swapPairs(next.next);
    next.next = head;
    return next;
    }
    }

swap-nodes-in-pairs

图片来自:https://github.com/MisterBooo/LeetCodeAnimation

Review

Writing memory efficient software applications in Node.js

文章讲述了如何使用Node.js编写高效I/O操作的程序,并循序渐进的给出示例:https://github.com/narenaryan/node-backpressure-internals

Tip

开源头像生成器,可以设置各种参数,在线使用

React Component Repo: https://github.com/fangpenlin/avataaars

Share

Go会成为下一个企业级编程语言吗?