深度优先搜索

组合(时间复杂度与2^n有关)

425 Letter Combinations of a Phone Number

做一个dict对应映射关系(string或数组利用下标也可以完成映射)
递归主函数+递归三要素

90 k Sum II,k数和 II

无需排序
递归主函数
递归三要素:
	出口:k=0&&target==0;找到了结果
		k=0||target<=0;不可能找到结果
		DFS传入i+1

135 Combination Sum 数字组合(K个元素的组合,和为target,数字可以重复使用,输出结果非降序)

需要set去重+排序+递归三要素
DFS传入i而非i+1,下一层DFS可以重复使用位置数字

排列(时间复杂度与n!有关)

10 String Permutation II 字符串的不同排列

去重逻辑:在同一层中,如果前面的b还没选掉,就不能选择后面的b,否则,会造成重复。

132 Word Search II 单词搜索 II 字母矩阵(Character Matrix)

1.如果当前走过的路径
	-是一个词,已经找到了一个词
	-是一个前缀
	-不是词,也不是前缀,回退一步(剪枝)
	wordSet中含有所有需要的词
	prefixSet中含有所有词的前缀(包括整个词)
2.在上右下左四个方向中选择一个还没走过的方向,走到下一个点,回到步骤1

Word Ladder II 单词接龙 II 词语接龙

BFS+DFS题目解析
BFS逐层遍历的方式天然具有寻找最短路径的属性。利用这个属性,我们可以找到从一点出发,可以到达的不绕远的下一个点。
DFS一直向深度纵深的方式天然具有记录当前路径的属性。我们不需要在BFS中用大量的空间记录每一个点的路径。有了BFS的预处理,DFS每次纵深的下一步,都是不绕远的下一个点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值