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
最终代码
class Solution {
public void deleteNode(ListNode node) {
node.val = node.next.val;
node.next = node.next.next;
}
}
Review
本周 Review 的英文文章为:导致 Vim 初学者放弃反模式
作者在文中给出了一些能让初学者更容易习惯于使用 vim 的建议,具体如下:
- 不要全身心投入。Vim 不同于 VS Code、IDE 等,你无法一在开始就掌握它,因此在安装好 Vim 后,每天使用 15~30 分钟,留意你觉得 Vim 缺乏哪些你想要的特性,把它们记录下来。
- 不要被各种 Vim 麻痹。有很多中 Vim 可供使用:原生 Vim、Neovim、GVim、Onivim、Spacevim 等等,作者更推荐使用 Neovim。
- 配置你自己的
.vimrc :刚开始使用 Vim 时,你也许会使用其他人已经配置好的 Vim,但慢慢地,你会发现别人的配置文件并不适合自己,此时你就需要开始构建自己的 Vim 配置文件(.vimrc )了,随着你不断更新自己的 Vim 配置文件,你使用 Vim 也会越来越顺手 - 只带你真正需要的东西。Vim 提供了多种插件,但 Vim 是编辑器而不是IDE,因此你不需要装太多插件,你只需要安装你真正需要的插件即可,记住,少就是多。
Tip
Java 中使用 synchronized 锁住 this 时,以下两种写法是等价的:
public void add(int n) {
synchronized(this) {
count += n;
}
}
public synchronized void add(int n) {
count += n;
}
Share
正好利用假期思考了下,觉得自己目前进入了一个瓶颈中,看似每天很充实,但收获却很有限,究其原因应该是重复着使用过去的方式,从而导致止步不前。想要突破,就需要踏出自己的舒适区,去尝试自己之前没有试过的新方法,才有可能突破。
|