摘要: ✅做题思路or感想 这题主思路是回溯 要注意的是会有元素的重复,所以这里要做树层去重 以下去重是需要在排序后才能进行!!!! 在candidates[i]与candidates[i - 1]相同的情况下: 如果used[i - 1] == true,则说明同一树枝使用过candidates[i - 阅读全文
posted @ 2022-04-01 19:14 北原春希 阅读(32) 评论(0) 推荐(0)
摘要: ✅做题思路or感想 这里依旧是找组合,故依旧是用回溯法 而因为这里的元素是可以重复选取的,所以这里的startIndex在递归时不需要+1,或者直接干脆不用startIndex就可以了 但是为了防止[2,2,3],[2,3,2]这种重复,所以需要安排一下子集都是要递增的就好了 class Solut 阅读全文
posted @ 2022-04-01 12:18 北原春希 阅读(39) 评论(0) 推荐(0)
摘要: ✅做题思路or感想 这种组合问题,直接用遍历搜索组合就好了 这里注意的是这里是分组的遍历,所以用一个group来控制分组! class Solution { public: //用一个表来记录电话字符串所代表的字符 const string letterMap[10] = { "", "", "ab 阅读全文
posted @ 2022-04-01 11:53 北原春希 阅读(48) 评论(0) 推荐(0)
摘要: ✅做题思路or感想 经典回溯 用startIndex来控制元素的范围,避免重复 class Solution { public: vector<int>vec; vector<vector<int>>result; void dfs(int k, int n, int startIndex) { / 阅读全文
posted @ 2022-04-01 11:18 北原春希 阅读(31) 评论(0) 推荐(0)
摘要: ✅做题思路or感想: 这道题用回溯的操作即可 值得注意的是这里为了让子集都是递增的(如[2,4],[3,5])所以这里要有一个startIndex来控制元素的范围,使得下一个加入的元素一定比当前处理的元素大 class Solution { public: vector<int>temp; vect 阅读全文
posted @ 2022-04-01 11:03 北原春希 阅读(35) 评论(0) 推荐(0)
摘要: ✅做题思路or感想: 构建二叉树的基本思想:找头节点,分割左右子树的序列 二叉搜索树的找头节点很简单:中间的节点就是头节点,并且就可以就着中间节点进行分割左右子树的序列 class Solution { public: TreeNode* sortedArrayToBST(vector<int>& 阅读全文
posted @ 2022-04-01 10:50 北原春希 阅读(30) 评论(0) 推荐(0)
摘要: ✅做题思路or感想: 这道题的主旋律是:将节点值控制在[low, high]中 这里因为会有删减的操作,所以还是要有父子节点间的赋值,故要用有返回值的递归函数比较方便,且因为要修改一整棵树,所以说要遍历整棵树 首先要明确带返回值的递归函数的代表意义,这里的递归函数表示的是修改好的搜索二叉树的头节点 阅读全文
posted @ 2022-04-01 10:32 北原春希 阅读(45) 评论(0) 推荐(0)