算法
文章平均质量分 51
shan_shmily
每天进步一点点 liushan.fun(待更新版)
展开
-
算法知识点————贪心
思路:如果当前区间的左端点大于等于前一个区间的右端点,说明当前区间可以是一个独立的区间,我们可以保存它,如果当前区间的左端点小于前一个区间的右端点,说明当前区间和前面一个区间重合了,我们需要删除一个区间,那么删除哪个更好呢?很明显是当前这个,因为下一个区间如果和前面那个区间重合了,也肯定和当前区间重合,这时候又要删除一个区间,但是下一个区间如果和当前区间重合,那么把当前区间删除后,不一定会和前面的区间重合。二者都是在求最优解的,都有最优子结构的性质(子问题的最优解构成当前问题的最优解)。原创 2024-10-04 15:56:59 · 284 阅读 · 0 评论 -
算法知识点————平衡二叉搜索树
//给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡二叉搜索树。定义:左子树都小于根节右子树都大于根节点。平衡:两个子树高度差原创 2024-09-09 10:00:05 · 365 阅读 · 0 评论 -
算法知识点————双指针【删除重复元素】【反转链表】
//给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。1、先用c记录b一会的位置,3、然后ab后往后移动一个,2、然后b指向a节点。原创 2024-09-09 10:22:13 · 409 阅读 · 0 评论 -
算法知识点————背包问题【动态规划】【打家劫舍】【股票买卖】
f[i] [j] = f[i-1] [j]j–){这里面是正向for(int j=v[i];01背包区别:f[i] [j] = max(f[i-1] [j] , f[i-1] [j-v[i]] +w[i])完全背包区别:f[i] [j] = max(f[i-1] [j] ,f[i] [j-v[i]] +w[i])f[i] [j] = f[i-1] [j-V[i]] + w[i](1)f[ i ] [j] 表示前i个物品容量j的最大价值。f[i] [j] = f[i-1] [j]可以选i也可以不选i。原创 2024-09-09 10:29:42 · 567 阅读 · 0 评论 -
数据结构知识点——常用的函数
【代码】数据结构知识点——常用的函数。原创 2024-09-09 10:32:03 · 373 阅读 · 0 评论 -
算法题————杨辉三角
【代码】算法题————杨辉三角。原创 2024-09-09 10:40:37 · 111 阅读 · 0 评论 -
算法知识点————数论【最大公约数】【快速幂】【分解质因数】
两数乘积=最大公约数*最小公倍数 ,如果是多个数的话就两个求完在和第三个求。结论1:两个互质的整数mn不能凑出的最大整数是(n-1)(m-1) -1。在数论中,如果两个或两个以上的整数的最大公约数是 1 ,则称它们为。思想:每一步都把指数减半,而相应的底数做平方运算。结论2:一个数的因数可以拆成n个质因数的乘积。:小于等于n的正整数中与n互质的数的数目。黄金分割:0.61803399。原创 2024-09-09 11:12:45 · 291 阅读 · 0 评论 -
算法知识点————【LRU算法】
设计一种数据结构:接收一个 capacity 参数作为缓存的最大容量,然后实现两个 API,一个是 put(key, val) 方法存入键值对,另一个是 get(key) 方法获取 key 对应的 val,如果 key 不存在则返回 -1。要求:get 和 put 方法必须都是 O(1) 的时间复杂度。应用场景:手机清后台的时候先清最久没有使用的应用。哈希链表:哈希的查找配合双向链表的快速插入和删除。思想:淘汰最久没有使用的。原创 2024-09-09 11:23:09 · 294 阅读 · 0 评论 -
算法知识点——常用输入输出数据的方式
除了换行之外,还会清空缓存区,而清空缓存区这件事情会耗时很久,因此为了提高速度,一般直接:cout原创 2024-09-12 18:58:16 · 394 阅读 · 0 评论 -
算法知识点———并查集
然后如果1和3这条边想合并的时候只需要合并1的父结点和3的父结点即可,也就是1的父结点是4.这样01234都在一个集合里面,也就是说root[0] == root[2] 表示0和2是互通的。并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。然后当结点1和结点2有边的时候可以设置结点2的父亲结点是结点1.结点3的父结点是结点4,那么parent[3] = 4。接下来n行,每行包含一个字符串和一个整数,表示一个IP地址和它的编号。原创 2024-09-18 14:15:02 · 398 阅读 · 0 评论 -
算法题——最小会议室数量
定义meetings向量,向量里面存一对int类型,表示输入开始的时间和结束的时间。然后event向量里面存结构体,比如拿例子10,20 30,40这个来说,meeting[0] = (10,20) meting[1] = (25,35) event[0] = (10,1) event[1] = (20+10=30,-1) event[2] = (30,1) event[4] = (50,-1) .然后对event排序按照时间,当时间相同的时候按照类型小的在前面也就是先处理结束时间。原创 2024-09-18 14:17:39 · 199 阅读 · 0 评论 -
算法知识点————数论和链表
升级版本:两次反转链表,然后相加,结果返回反转。拿一个数(检测 i 和i-1 重复的不选择)1->6->3->9 对应9361。1->6->3->9 对应1639。 2数和问题 (检测 去重)1->5->8 对应851。1->5->8 对应158。原创 2024-10-02 17:06:54 · 301 阅读 · 0 评论 -
【算法知识点】二分查找
二分: 整数二分和浮点数二分一定是单调的才可以二分。整数二分 模板一:找中间点判断是否满足check函数(),此函数需要自己根据题意调整,假设红色区域为满足check函数,说明mid在红色区域内,此时要在mid到r之间找,l=mid,否则r=mid-1。由于此时l=mid 所以中间点应为(l+r+1)/2模板二:中间点mid=(l+r)/2mid=(l+r)/ 2mid=(l+r)/...原创 2019-06-05 21:45:28 · 461 阅读 · 0 评论