基础理论
刷题方法
资源推荐
算法数据结构
时间/空间复杂度
数组 array
链表 linked list
队列
栈
堆
哈希表
排序
LRU Cache
递归
树
trie 树
并查集
深度优先搜索 & 广度优先搜索
启发式搜索
分治 回溯
贪心算法 Greedy
bloomfilter
二分查找
图
动态规划
高级搜索
位运算
字符串
加密算法
分类目录归档:算法基础
记忆细节,反复练习
打破惯性,机器思维
分治、回溯、递归、动态规划
升维
空间换时间
过遍数(五)
刷题第一遍 5~15分钟思考
直接看解法,多解法的比较解法优劣
刷题第四遍/第五遍 的时候一定要上英文站 discuss board 中 查看 Most Votes 中最高票的前三个回答
练习缺陷,弱点的地方
不舒服,不爽,枯燥
生活中的例子: 乒乓球,台球,玩游戏等
Feed back 获得反馈
主动型反馈 (自己去找)
https://github.com/wangxiuwen/data_structures_and_algorithms.git
花花酱 YouTube
花花酱LeetCode B
花花酱代码
花花酱题目分类
两个字符串变换问题,一般要转成一个二维数组,两个字符串分别为字符串的行和列
python:
x = 'abbc'
for ch in x:
print(ch)
Java:
String x = "abbc";
String y = "abbc";
for (int i = 0; i < x.length(); ++i) {
char ch = x.charAt(i);
}
for (char ch : x.toCharArray()) {
Sys
异或: 相同为 0,不同为 1。也可用“不进位加法”来理解。 异或操作的一些特点:
剪枝 双向 BFS 启发式搜索(A*)
搜索方向:
DFS: depth first search 深度优先搜索
BFS: breadth first search 广度优先搜索
双向搜索、启发式搜索
https://en.wikipedia.org/wiki/Dynamic_programming
https://zh.wikipedia.org/wiki/动态规划
function DP():
dp = [][] # 二维情况
for i = 0
left, right = 0, len(array) -1
while left <= right:
mid = (left+right)/2
if array[mid] == target:
# find the target
break or return result
elif array[mid] < target:
left = mid + 1 # 左右下界为整型需要加一减一,左右下界如