欢迎光临散文网 会员登陆 & 注册

刷题第十三天

2023-08-15 23:35 作者:叶荜莉  | 我要投稿

17. 电话号码的字母组合:

回溯有点难,但根据模板思路走下来,似乎也还行,这题要先拿一个数组存各个数字对应的字符。递归函数需要两个参数一个是digits,一个是s,存当前的字符结果。终止条件为当digits为空时,将s存进结果集。获取digits[0]处的电话字母组合,设为str,循环str,让s+=c,递归减去下标0的digits和s。递归结束让s减掉最后一个字符,也就是前面的c。

39. 组合总和:

递归函数需要传入candidates,target,当前的sum,还有开始下标s。终止条件为sum==target时。从s开始循环candidates。这里我事先排序了candidates,以便后续的剪枝,如果sum+candidates[i]大于target,则说明后续的candidates再怎么加都是比target大,直接break。将candidates[i]存进path,递归sum+candidates[i]和i,pop。

40. 组合总和 II:

这题和39基本相似,区别在于candidates里有重复的数,candidates里的数每次只能用一次,需要额外注意设置一个map存已经遍历过的数,这样就可以避免重复。

131. 分割回文串:

这题的关键在于循环切割点。如果当前切割点大于s的长度,说明是一个结果。





刷题第十三天的评论 (共 条)

分享到微博请遵守国家法律