代码随想录day 23 组合总和 | 组合总和II | 分割回文串
组合总和
解题思路
利用回溯算法进行遍历,由于数组内的数字可以重复调用,因此在套用模板进行遍历时,下一次递归的startIndex是当前遍历的下标。
剪枝操作则是通过比较和是否大于目标值,如果大于则不进行下一次的递归,以此来减少循环遍历的次数,这个条件需要加到for循环中。
知识点
回溯
心得
注意迭代的起始点位置,以及剪枝操作时需要注意遍历的次数。
组合总和II
组合总和II
【二刷】当集合内的数组不能重复时,我们需要使用startIndex
解题思路
遇上一题类似,多了一步除重的过程。除重的办法是先将数组排序,之后遍历并迭代回溯函数之后,判断下一个节点是否和当前值相等,如果相等则跳过。
知识点
回溯,除重
心得
利用了之前做题时遇到过除重的方法并和回溯算法结合。
分割回文串
解题思路
分割字符串是回溯算法中一类较为难的题目。由于要求的是分割字符串,所以我们构造N叉树的方法也和以往的数组题目不同。字符串分割的组合是从字符串中不同位置的分割组成的,例如第一个组合是从字符串中第一个字符开始分割,随后其子树则是每次不断向后分割一个,以此类推便能得到所有可能的组合
知识点
回溯
心得
没想到字符串的分割方法,得记下来并多次巩固。