算法题
leetcode被虐就完事了
代码健身摩托gucci上海
这个作者很懒,什么都没留下…
展开
-
链表算法套路
3. 设pre cur cur_next指针(主要就是这个pre)然后正常遍历pre = pre.next就行。返回的时候可以返回newHead.next;5. 哈希表永远是判断有没有重复的第一选择(判断环形)2. 设一个cur 一个cur_next。1. 两指针一起走 快慢指针。4. 递归yyds。原创 2022-11-18 09:30:37 · 75 阅读 · 0 评论 -
那种输出全部组合的List<List<Integer>>题
这种因为是要输出全部可能的组合而不是组合的数量,所以一定要恢复现场 也就是回溯法最常见类型有 组合总和 1 2 3 4。原创 2022-11-14 10:45:44 · 340 阅读 · 0 评论 -
leetcode动态规划被虐
他要输出的是 真实的子串,不是他的子串长度。所以普通的递归解决不了问题。只能暴力列举法+递归递归 用 left和right 左右两边开弓 ,且记忆化搜索dp 按对角线一条一条填数据。原创 2022-09-28 17:15:26 · 95 阅读 · 0 评论 -
暴力递归到动态规划
精髓就是遵照题意,先写出暴力递归,然后可以发现有好多重复计算过程,浪费时间。这时候写一个dp缓存数组,将每一次暴力递归的结果存在dp里。这几种模型可以尝试动态规划。原创 2022-09-20 15:26:54 · 103 阅读 · 0 评论 -
边走边维护 一定要会的技巧
边走边维护,就是说,有时候你需要两层循环或循环两次才能做的一件事,你只用一次循环直接做完。思想就是 我平常喜欢把东西都处理好了再分配应该分配的东西。这个就是 边处理边分配,尤其是找最大东西。比如 求一个数组里面最大的两个数和。原创 2022-10-08 18:51:23 · 49 阅读 · 0 评论 -
动态规划-零钱兑换合集
322的零钱兑换,他要的是最小值,也就是说 index法和for循环森林法都可以用,因为即便森林法重复了!我在取最小min的时候 会过滤掉,只是我多算了一会儿而已。但是这个方法无法解决 要求你先后拿的钱顺序不一样那种题,比如 377的组合总和。518的零钱兑换,他要求的是一共多少取钱方法,我就不能用森林法,因为有重复序列。377的组合总和这种,对序列先后顺序要求严的 就用 for循环内部函数方法。也就是 森林法里面,我外部循环是 可变参数,内部是数组值。而518的dp 外部是数组值,内部是可变参数。原创 2022-10-05 20:01:12 · 96 阅读 · 0 评论 -
数据结构与算法
1.判断是否为完全二叉树层次遍历法:(队列)2.递归法首先三个重要辅助条件首先2.给定两个节点 找他们的共同祖先思路二:递归这种递归返回的信息想要多少就多少,递归的套路就是 明确返回什么 以及这种结果应该怎么设置。原创 2022-09-08 14:58:57 · 105 阅读 · 0 评论 -
贪心策略2
如果i能放 i+1能放 那我肯定放在i+1的位置,且不用管他i+2位置能不能放,因为我i+1全包了,这时候index直接到i+3的位置。具体做法就是穷举法和那个方法的最终结果去比较,用不同的例子去比较,看答案是否一致。用小根堆先去找出 哪个项目我玩得起,把玩得起的放入大根堆中,再大根堆里找,最值的项目 我去玩。实在找不到的,就用对数器去验证他是正确的,常见比较器会用穷举法!就是自己分析,想几个贪心策略,找找反例去推翻他们。贪心策略:小根堆解决 别问为啥用小根堆 贪心策略解释你懂的。穷举法:(记得恢复环境!原创 2022-09-13 17:11:20 · 95 阅读 · 0 评论 -
路径总和问题
1. 方法就两种 普通dfs和 双层dfs(也就是for循环遍历每一个节点)2. 有的情况 比如你要操作到全局变量的时候 必须恢复现场。原创 2022-10-16 09:53:21 · 67 阅读 · 0 评论 -
树的奇y巧技
w原创 2022-10-19 11:26:51 · 90 阅读 · 0 评论 -
并查集和图
题目: 每个user有三个字段 a,b,c ,若俩个user中有任意一个字段相同,他们就是统一用户解法: 并查集 先找一下有没有相同的 发现相同立马union mapA就是a字段。原创 2022-09-14 15:02:37 · 82 阅读 · 0 评论 -
暴力递归1
比如111可以是aaa或者11-->k变成ka所以在递归时候要分辨去取几个数来转化,且数字不能为0或大于26。原创 2022-09-16 14:58:56 · 72 阅读 · 0 评论