GitHub 68.8k star的硬核算法教程
这次一共送10本,中奖率很多比在公众号高很多,毕竟视频号直播不会比看公众号的人多。
书有一点和其他的书不太一样,书中并没有统一编程语言,而是混用了三种最常用的编程语言:Python、C++ 和 Java。
这么做主要是考虑到刷算法题是在养成一种思维模式,不应该局限于具体的编程语言。每一种语言都有缺点,我们到底选择用哪一种语言来解某道题目的根本依据是,解法的思路是否可以避开隐晦的语言特性,做到清晰易懂。
不用担心有的语言你不熟悉,算法根本用不到编程语言层面的技巧,本书会秉持最小化语言特性的原则,只会介绍本书中用到的数据结构和对应的 API,只要你学过任何一门编程语言,很容易就能明白。
1def coinChange(coins: List[int], amount: int):
2
3 def dp(n):
4 if n == 0: return 0
5 if n < 0: return -1
6
7 res = float('INF')
8 for coin in coins:
9 subproblem = dp(n - coin)
10 # 子问题无解,跳过
11 if subproblem == -1: continue
12 res = min(res, 1 + subproblem)
13 return res if res != float('INF') else -1
14
15 return dp(amount)
1def dp(n):
2 for coin in coins:
3 dp(n - coin)
欢迎大家关注下我的视频号
评论