不会飞的章鱼

熟能生巧,勤能补拙,静能生慧;念念不忘,必有回响。

搜索-遍历

  • 每个节点都要访问一次
  • 每个节点仅仅要访问一次(不做无用功)
  • 对于节点的访问顺序不限:dfs / bfs

示例代码

DFS算法模板

1
2
3
4
5
6
7
8
9
10
11
12
def dfs(node):
if node in visited:
# already visited
return

visited.add(node)

# process current node
# ... logic here

dfs(node.left)
dfs(node.right)
阅读全文 »

它是如何工作的?

在最简单的形式中,二分查找对具有指定左索引和右索引的连续序列进行操作。这就是所谓的查找空间。二分查找维护查找空间的左、右和中间指示符,并比较查找目标或将查找条件应用于集合的中间值;如果条件不满足或值不相等,则清除目标不可能存在的那一半,并在剩下的一半上继续查找,直到成功为止。如果查以空的一半结束,则无法满足条件,并且无法找到目标。

LC二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1
 

提示:

你可以假设 nums 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。
阅读全文 »

动态规划-Dynamic Programming

1,wiki定义
2,in a recursive manner
3,Divide & Conquer + Optimal substructure——分治+最优子结构

关键点

  • 动态规划和递归或者分治没有根本区别(关键看有无最优的子结构)
  • 共性:找到重复子问题
  • 差异性:最优子结构、中途可以淘汰次优解

顺推模板

阅读全文 »

起因

因为买了一台新电脑,所以需要将旧电脑上本地的Hexo文件夹迁移到新的电脑上来,写以此文记录迁移Hexo的过程。

流程

第一步,在新电脑上搭建Hexo的环境

安装node

阅读全文 »