ARTS Week 7

Algorithm

本周的 LeetCode 题目为 237. 删除链表中的节点

题目简介:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为要被删除的节点 。

输入:head = [4,5,1,9], node = 5
输出:[4,1,9]

题目思路:因为无法获取给定节点之前的节点,只能获取当前节点和它后面的节点。因此,我们可以将当前节点的值更改为其下个节点的值,而后删除其之后的节点。示例如下:

head = 4->5->1->9, node = 5
更新 node 的值: 4->1->1->9
删除 node 后面的一个节点:4->1->9

最终代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

Review

本周 Review 的英文文章为:导致 Vim 初学者放弃反模式

作者在文中给出了一些能让初学者更容易习惯于使用 vim 的建议,具体如下:

  1. 不要全身心投入。Vim 不同于 VS Code、IDE 等,你无法一在开始就掌握它,因此在安装好 Vim 后,每天使用 15~30 分钟,留意你觉得 Vim 缺乏哪些你想要的特性,把它们记录下来。
  2. 不要被各种 Vim 麻痹。有很多中 Vim 可供使用:原生 Vim、Neovim、GVim、Onivim、Spacevim 等等,作者更推荐使用 Neovim。
  3. 配置你自己的 .vimrc:刚开始使用 Vim 时,你也许会使用其他人已经配置好的 Vim,但慢慢地,你会发现别人的配置文件并不适合自己,此时你就需要开始构建自己的 Vim 配置文件(.vimrc)了,随着你不断更新自己的 Vim 配置文件,你使用 Vim 也会越来越顺手
  4. 只带你真正需要的东西。Vim 提供了多种插件,但 Vim 是编辑器而不是IDE,因此你不需要装太多插件,你只需要安装你真正需要的插件即可,记住,少就是多。

Tip

Java 中使用 synchronized 锁住 this 时,以下两种写法是等价的:

public void add(int n) {
    synchronized(this) { // 锁住this
        count += n;
    } // 解锁
}
public synchronized void add(int n) { // 锁住this
    count += n;
} // 解锁

Share

正好利用假期思考了下,觉得自己目前进入了一个瓶颈中,看似每天很充实,但收获却很有限,究其原因应该是重复着使用过去的方式,从而导致止步不前。想要突破,就需要踏出自己的舒适区,去尝试自己之前没有试过的新方法,才有可能突破。

上一篇:ARTS Week 8


下一篇:ARTS Week 4