第七周总结

第七周总结

本周进度:分治法和回溯法还了解了一点DFS算法。

分治法 devide&conquer
这属于一个特殊的递归,就是讲一个大问题分解成一个个小问题,然后将小问题的解合并成大问题的解,也是运用到了递归,自己调用自己。

力扣练习题
169 多数元素
先将数组对半分,然后一步一步往下分,一步一步递归,然后找俩边多数元素中出现次数最多的元素,若俩边元素相等,就返回一边元素,不相等就需要递归再找。如果左边最大值大于右边最大值就返回左边最大值,若右边最大值大于左边最大值就返回右边最大值。

53 最大子序和
先将数组一步一步对半分,最大子序列可能在左边子序列,右边子序列和中间子序列中。中间的子序列就是跨越中间线,来相加左边和右边的最大值,然后在这三个里面找其中的最大值。

回溯法 Backtracking
这个也是特殊的递归,类似枚举,一层一层向下递归,尝试搜索答案,若找到答案,就去尝试别的可能并返回答案,若找不到答案,就返回上一层递归,尝试别的路径。总的来说就是回到过去,找最优路径。

力扣练习题
22 括号生成
左边括号数要大于右边括号数,不然不符合条件。若右边括号数大于左边括号数就不往下执行了,若左边括号数和n相等就添加到结果集中间去。若左边括号数小于n就加一个左括号,若右边括号数小于左边括号数就加一个有括号。

78 子集
按照数组的长度来找子集,一直向后递归,去掉不满足条件的即可。

DFS 深度优先算法
这个是从root节点开始,尽可能深的搜索每一个分支,把一个分支的结果搜索完,再去看下一个分支。这个也用到了递归的思想,主要应用于二叉树搜索和图搜索。

DFS和回溯法的区别
在于DFS是每一边都走完,再回溯。
回溯法=DFS+剪枝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值