算法
文章平均质量分 58
懒羊羊(学习中)
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划有关
类似青蛙跳台阶问题,dp[i]表示从第i个数字到最后有多少种字符串,转移方程dp[i]=dp[i+1]+dp[i+2]或者dp[i]=dp[i+1],判断条件为第i+1个数字和第i个数字是否可以构成字符串。转移方程:dp[i]=max(dp[i-1],prices[i]-min(prices[0...i-1])空间使用优化: 由于 dp[i]只与 dp[i +1],dp[i+2] 有关,因此可使用两个变量 p,q。转移方程:dp[i]=max(dp[i-1]+nums[i],nums[i])原创 2023-03-07 22:49:09 · 107 阅读 · 0 评论 -
线性表和链表有关算法
题目:将链表按序号为奇数拆分为一个链表,偶数拆分一个,偶数链表要逆序,如(1,2,3,4,5,6)拆分为(1,3,5)和(6,4,2)三个指针,分别用来指向顺序表中的插入点,指向要被插入的节点,被插入节点在原链表中的下一结点。5、有序去重, 双指针,指向新生成链表的尾部和遍历原链表。利用头插法,把原链表的结点依次加入新链表的头节点后面。要注意最后一步要将分链表的指针设为null。1、删除值为x的结点——遍历+删除。删除时维护一个后续元素前移的位数。思路:一个头插,一个尾插。1、删除操作(去重)原创 2022-07-04 14:14:20 · 241 阅读 · 0 评论 -
树和图相关算法代码
出栈时输出,不同的是输出前要先检查右孩子是否被访问过,因此可以在节点内设置标志位表示该节点是否被访问过,访问完右孩子结点后要将当前指针结点设为null以返回上一结点。都是利用栈,先沿着根的左孩子依次入栈,直到左孩子为空,然后出栈并访问右孩子。不同的是中序遍历先出栈再输出结点,而先序遍历先输出节点再入栈。出队时输出并将其左右孩子入队。1、先序、中序的非递归实现。2、后序遍历的非递归实现。原创 2022-10-01 14:56:13 · 311 阅读 · 0 评论 -
暴力求两节点的最近公共祖先
思想:非递归后序遍历中保存的为所有祖先节点,故直接先求两节点的所有公共祖先,得到两个栈,再拿这两个栈的元素依次比对。题目描述:23版王道P150T13。原创 2022-10-07 15:47:28 · 444 阅读 · 0 评论
分享