摘要:
16. 动态规划 以下规则来自左程云老师的总结 1. 暴力递归的优化 有重复调用同一个子问题的解,这种递归可以优化 如果每一个子问题都是不同的解,无法优化也不用优化 2. 如何找到某个问题的动态规划方式 1)设计暴力递归:重要原则+4种常见尝试模型!重点! 2)分析有没有重复解:套路解决 3)用记忆 阅读全文
posted @ 2023-11-09 09:05
犹豫且败北
阅读(63)
评论(0)
推荐(0)
摘要:
什么都没有捏 占个位置以后学_ 阅读全文
posted @ 2023-11-09 09:04
犹豫且败北
阅读(24)
评论(0)
推荐(0)
摘要:
14. 回溯 问自己三个问题: 当前操作应该是什么? 子问题是什么? 下一个子问题应该是什么? 14.1 Master公式 形如 $$ T(N) = a * T(\frac{N}{b}) + O(N^d) $$ 其中的a、b、d都是常数的递归函数,可以直接通过Master公式来确定时间复杂度 如果 阅读全文
posted @ 2023-11-09 09:04
犹豫且败北
阅读(36)
评论(0)
推荐(0)
摘要:
3. 图 13.1 图结构 点集: // 点结构的描述 public class Node { public int value; public int in; // 入度 public int out; // 出度 public ArrayList<Node> nexts; // 相邻的点 pub 阅读全文
posted @ 2023-11-09 09:04
犹豫且败北
阅读(24)
评论(0)
推荐(0)
摘要:
12. 并查集 12.1 并查集 1. 题目 并查集提供两个功能: 1. 看两个元素是否是同一个集合 1. 将两个元素所在集合的全体合 1. 均摊下来(比如一百万的数据,有一亿查询)是O(1) 2. 思路 判断集合:每个节点中加入一个指针,初始都指向自己。这个指针一直往上找,找到最上面的就是一个 阅读全文
posted @ 2023-11-09 09:04
犹豫且败北
阅读(63)
评论(0)
推荐(0)
摘要:
11. 桶排序 桶排序不是基于比较的排序,利用一个容器来进行存储额外信息进而提升速度(O(n)) 11.1 计数排序 看数的范围,建立一个数组,然后记录每个数出现的次数,再按照次数来进行建立数组 1. 题目 有n个公司员工,年龄在16到200之间,用O(n)的复杂度来进行排序。 2. 思路 阅读全文
posted @ 2023-11-09 09:03
犹豫且败北
阅读(55)
评论(0)
推荐(0)
摘要:
10. 前缀树(trie) 8.1 前缀树概念 1. 前缀树概念 1)单个字符串中,字符从前到后的加到一棵多叉树上 2)字符放在路上,节点上有专属的数据项 数据项pass:有多少路径经过了这个点 数据项end:有多少路径是以这个点结尾 3)所有样本都这样添加,如果没有路就新建,如有路就复用 4)沿途 阅读全文
posted @ 2023-11-09 09:03
犹豫且败北
阅读(31)
评论(0)
推荐(0)
摘要:
9. 堆排序 9.1 完全二叉树 在满二叉树路上的树。 如果二叉树是完全二叉树,并且用数组表示,则: 位置 i 的左右孩子节点为2i+1和2i+2 位置 i 的父节点为(i-1)/2 9.2 堆 堆是完全二叉树 堆有大根小根之分 他的每颗子树都必须满足大根/小根堆 9.3 堆排序 1. 题目 堆 阅读全文
posted @ 2023-11-09 09:03
犹豫且败北
阅读(47)
评论(0)
推荐(0)
摘要:
8. 单调栈 有个数组arr, 找到arr[i]左面比他小的第一个数, 和右面比他小的第一个数,要求O(N)的时间复杂度. 思路:栈底下栈顶从小到大,栈中存放位置信息,入栈或者出栈的时候可能需要记录信息。 8.1 每日温度 https://leetcode.cn/problems/daily-tem 阅读全文
posted @ 2023-11-09 09:02
犹豫且败北
阅读(16)
评论(0)
推荐(0)
摘要:
7. 双指针、滑动窗口 7.1 含有全部字符的最短字符串 1. 题目 https://leetcode.cn/problems/minimum-window-substring/ 给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返 阅读全文
posted @ 2023-11-09 09:01
犹豫且败北
阅读(43)
评论(0)
推荐(0)
摘要:
6. 归并排序 6.1 基础归并排序 分层两半,而后合并。 重点:MargeSort把比较变成了有序的东西,这个有序的东西可以帮我们做很多事情 6.1.1 递归的归并排序 两个函数: 分:process(arr,L,R) --> 保证[L,R]范围上有序。 public static void mS 阅读全文
posted @ 2023-11-09 09:00
犹豫且败北
阅读(49)
评论(0)
推荐(0)
摘要:
5. 二叉树 5.0 二叉树递归套路 1)假设以X节点为头,假设可以向X左树和X右树要任何信息 2)在上一步的假设下,讨论以X为头节点的树,得到答案的可能性(最重要) 3)列出所有可能性后,确定到底需要向左树和右树要什么样的信息 4)把左树信息和右树信息求全集,就是任何一棵子树都需要返回的信息S 5 阅读全文
posted @ 2023-11-09 09:00
犹豫且败北
阅读(30)
评论(0)
推荐(0)
摘要:
4. 栈和队列 栈:push,pop,peek(返回当前值),empty 队列:add,remove,peek(返回当前值),isEmpty 4.1 双向链表实现栈和队列 4.2 数组实现栈和队列 加一个指针指向某个位置。 队列:环形数组 4.3 最小栈 1. 题目 https://leetcode 阅读全文
posted @ 2023-11-09 09:00
犹豫且败北
阅读(40)
评论(0)
推荐(0)
摘要:
2. 异或算法 2.1 异或基础 0^N == N N^N == 0; 记为无进位相加即可,1+1 = 0; 异或运算满足交换律和结合。 2.1.1 不用额外变量交换两个数 解法:aba = b,abb = a。 2.1.2 找出现奇数次的数 1. 题目 一个数组中有一种数出现了奇数次,其他数都 阅读全文
posted @ 2023-11-09 09:00
犹豫且败北
阅读(134)
评论(0)
推荐(0)
摘要:
3. 链表 3.1 单向链表和双向链表 单项:有一个next,双向:last,next 3.2 删除链表的倒数第n个结点 1. 题目 https://leetcode.cn/problems/SLwz0R/ 给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 输入:head = [1 阅读全文
posted @ 2023-11-09 08:59
犹豫且败北
阅读(23)
评论(0)
推荐(0)
摘要:
1. 基础算法 1.1 基础排序算法 排序分为插入排序(直接插入排序、希尔排序),选择排序(选择排序、堆排序),交换排序(冒泡排序、快速排序),归并排序(归并排序)。 1.1.1 选择排序 找i-n范围内的最小值所在的位置,放到第i位。 public static void selectionSor 阅读全文
posted @ 2023-11-09 08:34
犹豫且败北
阅读(63)
评论(0)
推荐(0)

浙公网安备 33010602011771号