ARTS 是由陈皓(网名「左耳朵耗子」)在极客时间上发起的一个每周打卡计划,详情查看 https://www.zhihu.com/question/301150832

Algorithm

LeetCode 009 — Palindrome Number

Review

How to think like a programmer — lessons in problem solving

这是 Medium 上的一篇文章,名字翻译成中文是《怎样像程序员一样思考》。

文章的开头说「像程序员一样思考」实际上是指一种更有效的解决问题的方法。

我们每个人总是碰到各种各样的问题,或大或小。我们处理这些问题的方式,从某种程度上来说,非常随机。一般人们总是这样来解决一个问题:首先尝试一种解决方法;如果这种方式不起作用,那么就尝试另外一种;如果依然不起作用,那么重复第二个步骤,直到你足够幸运解决了问题。有的时候,你足够幸运,但是这是解决问题最差的方式。

解决一个问题最好的方式包括两项:a) 找到一个处理问题的通用框架 b) 不断训练

通用框架

1. 理解问题

理解问题的本质。大多数困难的问题之所以困难是因为你没有理解问题的本质。

2. 做计划

不要在没有做好解决方案的计划之前一头扎进去。要写下解决问题的具体步骤。

3. 分解问题

这是最重要的一个步骤。

不要尝试解决一个巨大的问题,要把它分解成几个子问题。然后依次解决们每一个子问题。最后把这些子问题串联起来,你将会得到原始问题的解决方案。

4. 卡住了?

当你被卡住了,甚至解决不了一个子问题的时候,首先深呼吸,然后你要知道,这是很正常的。

下面是几个你可以尝试的方法:

  • 调试:一步步审视你的解决方案找出你错在哪里。

  • 重新评估问题:从另一个角度观察问题,看看是不是有某些东西能抽象成更通用的途径。

  • 搜索:从搜索引擎寻找解决问题的方式。不管你的问题是什么,很可能别人已经解决过了。

5. 训练

不要期望自己在仅仅一周之后就变得很厉害。如果你希望成为一个很厉害的解决问题的人,那么唯一的途径就是解决很多问题。

不断训练。

Tip

ES6 中遍历数组键值对的方法:

ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。它们都返回一个遍历器对象,可以用for…of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

for (let index of ['a', 'b'].keys()) {
  console.log(index);
}
// 0
// 1

for (let elem of ['a', 'b'].values()) {
  console.log(elem);
}
// 'a'
// 'b'

for (let [index, elem] of ['a', 'b'].entries()) {
  console.log(index, elem);
}
// 0 "a"
// 1 "b"

http://es6.ruanyifeng.com/#docs/array

Share

学习 Linux 101 管理文件权限和所有权

这篇文章详细介绍了如何管理Linux的文件权限,包括如何查看和理解权限、变更权限、变更用户组等。