860.柠檬水找零 思路: 设立钱箱count(3,0) 分成三种情况: 1. 5元钞票,count[0]++; 2. 10元钞票, 判断count[0]是否有钱返回(cou...
860.柠檬水找零 思路: 设立钱箱count(3,0) 分成三种情况: 1. 5元钞票,count[0]++; 2. 10元钞票, 判断count[0]是否有钱返回(cou...
1005.K次取反后最大化的数组和 思路: 先排序,在循环条件while(k>0&&i<nums.size()&&nums[i]<0)下,nums[i]=(-1)*nums[...
122.买卖股票的最佳时机II 思路: 用profit记录每一轮的利益,tempPrice记录手中的价格(假装买入第一天),result记录获得的收益 如果当前价格-手中持有...
贪心算法: 贪心无套路,局部最优推全局最优。 455.分发饼干 思路: 尽量大饼干给大需求 先排序,两个数组都从小到大顺序。用num记录多少个孩子吃到了饼干。如果没有孩子或没...
332.重新安排行程(二刷回看) 思路: 用回溯记录可能的行程,用vector used记录是否使用过,用如下代码判断是否放进path: if(tickets[i][0]!=...
491.递增子序列 思路: 这道题不能进行排序,否则会将后面的相同的数放到前面导致增加了数组。不排序但使用之前的去重没法去除非连续的集合。使用最大值记录i,跳过比最大值小的会...
93.复原IP地址 思路: 本来没有思路,看了下视频的思路讲解再写的代码 参数: 全局变量: vector result; stringpath; 函数变量: strings...
39. 组合总和 思路: 变量: 全局变量: vector<vector >result; vector path;intsum=0; 函数变量: vector &candi...
216.组合总和III 函数参数: 全局变量:一维数组path,二维数组result, int sum 参数:k,n,starti 终止条件: if(path.size()=...
回溯法理论基础: 回溯法: 回溯搜索法,用于搜索,实际上是递归函数 效率: 是穷举,暴力搜索,效率不高。剪枝可以更高效。 应用场景: 组合问题:N个数里面按一定规则找出k个数...
669. 修剪二叉搜索树(二刷注意) 思路: 类似删除二叉搜索树的节点,如果root->val不在范围内则删除节点,注意需要按照左右中的顺序,先处理左子树里的不符合的节点再处...
235.二叉搜索树的最近公共祖先 思路: 1. 按照搜索普通二叉树的最近公共祖先进行搜素,后序遍历,如果==则返回节点 2. 根据二叉搜索树特性进行寻找 边界条件: if(r...
530.二叉搜索树的最小绝对差 思路: 类似第98题:验证二叉搜索树,中序遍历能有序遍历,相邻元素即为差最小 1. 用中序遍历遍历树得到有序数组,用一个数组记录树的元素,再对...
654.最大二叉树 思路: 根据昨天做的前序+中序or中序+后序的思路进行做题。1.判断数组是否为空 2.找到数组中的最大值和其位置 3.根据数组最大值构造root根节点 4...
513.找树左下角的值 思路: 1.迭代法 每一层遍历开始,先存放result,再开始遍历,最后返回result。 2.递归法 定义一个pair<val,depth>,定义函...
110.平衡二叉树 思路: 这道题求的是高度,所以使用后序遍历,将左右节点的信息返回给根节点。如果是空节点则返回true,如果左右节点的高度相差大于1则返回false。 看视...
104.二叉树的最大深度 思路: 层序遍历,每一层深度加1,遍历完所有节点。返回深度。 看视频后: 深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开...
层序遍历 层序遍历是广度优先算法,需要队列来实现。队列先进先出符合一层层遍历的逻辑,栈适合深度优先算法是递归的逻辑。 先初始化,建立队列和两级数组。判断头节点是否为空,不为空...
二叉树理论基础 二叉树种类: 1. 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。节点数量2^k-1,k是深度。...
239. 滑动窗口最大值 思路: 用数组下标确定号滑动窗口两边边界,遍历元素O(n)。写一个在k个元素中寻找最大值的函数O(k)。暴力破解法,时间复杂度为O(nk),超过时间...