LeetCode剑指offer刷题总结---回溯法2

上一篇写了使用回溯法解决的几道题,这几天又把其他的回溯法的题做了一下。在这里总结一下。由于题目较多,就单独沾代码了,开链接直接看。

从题目要求上来说,主要分为三类:

  • 查找,这类题一般要我们找出所有满足条件的情况,返回一个集合。结果集合作为递归函数的一个参数进行传递。如51. N-Queens131. Palindrome Partitioning93. Restore IP Addresses,Combination Sum1&2&3subsetsubset2与combination相似,22. Generate Parentheses
  • 计数,这类题会让我们计数符合条件的所有情况,要求返回一个数值。其实套路与查找类型的一致,只是变量的处理上有一点不同。一般需要一个全局变量来计数,这个变量不作为递归函数的参数传递。52. N-Queens II377. Combination Sum IV(这道题用回溯法是超时的,应该用dp,这里放过来只是为了介绍这种类型的题)
  • 判断,判断是否可以找到符合条件的情况。79. Word Search37. Sudoku Solver。这种类型的题递归函数的返回值一般是boolean的。

另外几点:

  1. 一般不超过三个函数,主函数,递归函数,有的题目还需要一个判断函数,用来判断放置的位置是否符合条件。如52. N-Queens II,37. Sudoku Solver
  2. 特别要想清楚的是递归函数需要几个参数,一般来说有这几个:给定背景参数(棋盘,给定数组等),最终结果集合参数(计数类的题不需要),暂时结果参数,当前位置参数等等
  3. 返回条件,一般在递归函数的一开始进行判断返回。另外也要注意在循环结束时候的返回
  4. 回溯法的重点在递归函数,他的递归函数一般是循环和递归的结合。对于查找类型,在递归完成后要清除templist的最后一个元素;对于计数类型的,不需要,直接返回就行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值