查看: 1375| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] 请问该怎么理解李扣39、40这类题呢?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
李扣39 combination sum,40 combination sum ii 看答案是用dfs+backtracking解答。想了好久仍感觉不好理解。请问该怎么样去理解这类题呢?有什么窍门吗?该怎么样去练习这样的思维呢?谢谢!

上一篇:请问哪里可以刷前端的题呀?
下一篇:求建议,语言选择
🔗
crazycodyman 2019-8-31 14:28:20 | 只看该作者
全局:
youtube搜basketwangcoding
回复

使用道具 举报

全局:
建议自己根据代码手动模拟一下,比如数据量小一点,5个数一组,把递归函数分层画一下,什么时候返回上一层,返回之后需不需要reset之类的。我觉着记住这个图会方便理解代码。

评分

参与人数 1大米 +2 收起 理由
Kaku + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
oraclewindy 2019-9-4 08:33:21 | 只看该作者
全局:
模拟展开的过程就是一个解空间,换句话说就是所有解的可能
这个空间可以用树来表示,dfs+backtracking 就是在遍历这个解空间
如果当前这个节点不满足条件就backtracking,不再继续往下查找了

评分

参与人数 1大米 +2 收起 理由
Kaku + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
tommyjiang 2019-9-4 15:34:34 | 只看该作者
全局:
1. 其实最基础的思想还是遍历,遍历就需要用到 DFS。
2. 遍历也是有技巧的,不能不撞南墙不死心,及时设置条件触发回溯,相当于剪枝。
3. 别忘了先对原始数组排序。

评分

参与人数 1大米 +2 收起 理由
Kaku + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
Luffy_Tse 2019-9-5 13:24:29 | 只看该作者
全局:
39是无dup可复用, 40是有dup不可复复用
先说39
输入int[] nums, int target
我们可以把答案当成是数组的可复用的combination,也就是输出答案其实是 [x0,x1,x2,x3..xn-1] 满足 n0*x0+n1*x1+... == target
这个思路入手的话,下一个步就是怎样避免遍历多次,那么其实就可以吧这样的combination分解成如下的不同组
[1,*,*,*...], [2,*,*,....]...[x,*,*,.....]
[0,1,*,*....],[0,2,*,*,...]....[0,x,*,*,...]
[0,0,1,....]
[0,0,0,1,....]

同样的对于40,实际上40更简单,因为数字不能复用,你要找的其实就是[0,1,1,0,0,1....]这样的布尔组合, 同样的,可以把组合当成
[1,*,*,*...]
[0,1,*,*,...]
[0,0,1,*....]

当把组合都拆成这样互相肯定不会有overlap的组的时候,就很容易实现backtracking。下一步就是找剪枝条件。
那么对于这两题都是一样的,要么得到的组合刚好等于target,把组合加入答案,要么达到数组末尾,回退,那么小于target,回退,那么大于target,再进入下一层

评分

参与人数 1大米 +2 收起 理由
Kaku + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
Luffy_Tse 2019-9-5 13:28:48 | 只看该作者
全局:
还有一个,由于40的nums有dup,尽管可能的布尔组合是不同的,但是映射后的数字组合却相同,那么我们可以考虑增加一个限制条件,就是先把nums排序后,每一层在选择的时候,都选择不同的数字,使得映射后的组合依旧是唯一的。

评分

参与人数 1大米 +2 收起 理由
Kaku + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表