
算法
文章平均质量分 94
学习算法
IsLand1314~
热衷于在c++,Java领域学习,喜欢用博客来记录自己学习的点点滴滴,希望我的博客可以给你带来一些帮助。
笔记记录 gitee网站:https://gitee.com/island0920/projects
展开
-
【算法/学习】:搞懂链表题型,这一篇就够了
链表是一种基于动态内存管理的线性数据结构,通过节点指针串联实现高效增删操作。其核心特性包括非连续内存分布、灵活的节点插入/删除(O(1) 时间复杂度已知位置时),但随机访问效率较低(O(n))。解题关键在于指针操作,常用技巧如虚拟头节点简化边界处理、快慢指针检测环或定位中点、递归/迭代反转链表等。典型问题涵盖合并有序链表、删除倒数第 k 个节点、深拷贝复杂结构(如带随机指针的链表)及排序优化(归并排序)。链表在系统设计中广泛应用,如 LRU 缓存、跳表高效检索等。理解其内存管理与指针逻辑,结合双指针等技巧,原创 2025-02-24 10:26:35 · 1451 阅读 · 17 评论 -
Dilworth定理:最少的下降序列个数就等于整个序列最长上升子序列的长度
注意,显然DP是递增的(两种转移都不会破坏递增性),但这并不意味着它就是所求的上升子序列,你看,下一个元素是2,它会把。好了,最后得到的数组长度是4,所以最长上升子序列的长度就是4。4->8是长度为2的上升子序列,4->5也是,但是5比8更小,所以。把n个人提出来成为原序列的一个子序列,根据题意这个子序列中的元素是单调递增的(即后一项总是大于前一项),我们称为。更新成{2, 5, 6, 7},但原序列并没有一个子序列是{2, 5, 6, 7}。现在有序列4,8,9,5,6,7,2,7求LIS。原创 2024-05-14 23:57:03 · 1702 阅读 · 0 评论 -
【算法/训练】:贪心(算法理论学习及实践)
(如果求最小的整数,则从小到大排序)。原创 2024-10-21 18:55:41 · 902 阅读 · 0 评论 -
【C++算法】分治(快排 & 归并)
1. 引言,进行问题规模缩减,划分子问题(这里子问题相互独立而且和原问题解的性质是相同的,只是问题规模缩小了)。如果子问题的规模仍然不够小,再进行子问题划分,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止,最后求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。原创 2024-09-03 14:13:19 · 1317 阅读 · 49 评论 -
数据结构——排序算法分析与总结
排序算法原创 2024-05-02 14:27:15 · 2508 阅读 · 16 评论 -
【C++算法/学习】:位运算详解,看这篇就够了
✨🌏📃:在计算机内部,数是以「二进制(Binary)」的形式来进行存储。位运算就是直接对数的二进制进行计算操作,在程序中使用位运算进行操作,会大大提高程序的性能。:由 0 和 1 两个数码来表示的数。二进制数中每一个 0 或每一个 1 都称为一个「位(Bit)」。1. 位运算的运算符2. 位运算的性质。原创 2024-08-26 21:44:38 · 4304 阅读 · 0 评论 -
【算法/学习】双指针
双指针技巧可细分分为两类,原创 2024-08-18 16:28:19 · 1884 阅读 · 64 评论 -
【算法/学习】:记忆化搜索
✨ 落魄谷中寒风吹,春秋蝉鸣少年归 🌏📃。原创 2024-08-11 23:22:58 · 4675 阅读 · 75 评论 -
【算法/学习】:flood算法
✨🌏📃。原创 2024-08-10 13:02:48 · 1672 阅读 · 39 评论 -
【算法/学习】前缀和&&差分
对于一个给定的数列a,其中a[1],a[2]…在构造时,只需要将b[1]看做在[1, 1]区间上加上a[1];一维差分数组的构造也很简单,即a[1] = b[1], b[2] = a[2] - a[1], b[n] = a[n] - a[n-1];始终要记得,a数组是b数组的前缀和数组,比如对b数组的b[i][j]的修改,会影响到a数组中从a[i][j]及往后的每一个数。注意:求 [ l, r ]的和是s[ r ] - s[ l - 1],之所以要 l - 1是因为,a[ l ] 也包括在内。原创 2024-07-22 17:08:02 · 1136 阅读 · 40 评论 -
【算法/序列】等差数列&&子序列&&算术序列&&最长对称子串
子序列:是通过从原序列删除零个或多个元素并在不改变顺序的情况下排列其余元素而获得的序列。:是通过从原序列删除零个或多个元素并在不改变顺序的情况下排列其余元素而获得的序列。该题主要是求其满足等差性质的子数组个数,并且子数组在原数组的相对顺序不能变,并且。长度为3的子序列:(1,2,3)、(1,2,5)、(1,4,5)长度为1的子序列:(1)、(2)、(3)、(4)、(5)长度为2的子序列:长度为2的子序列都是算术子序列。:是数组中的一个连续序列。长度为4的子序列:0。长度为5的子序列:0。原创 2024-07-14 15:23:33 · 1199 阅读 · 0 评论 -
【算法/学习】单调队列&&单调栈
擅长维护区间【最大/最小】值,最小值对应单调递增队列擅长维护最近【大于/小于】关系,从左侧先入栈就是维护左侧最近关系从右侧先入栈,就是维护右侧最近关系。原创 2024-07-09 12:05:31 · 786 阅读 · 30 评论 -
矩阵快速幂
利用矩阵乘法和快速幂运算,时间复杂度可达到 O(2^3\ logn)O优于普通的O(n), 其中数字2 为抽象出的矩阵边长 2^32 为矩阵乘法运算的时间,logn为快速幂运算时间。是用来快速计算指数表达式的值的,例如 210000000,普通的计算方法 2*2*2*2…10000000次,如果一个数字的计算都要计算那么多次的话,那么这个程序一定是失败的。注意:实现时为了简便可以把矩阵C的大小设置成等同于矩阵B的大小,空位用0填充。1、当指数是偶数时,我们可以让指数除以2,底数乘以底数。原创 2024-05-07 19:08:12 · 763 阅读 · 31 评论