算法
文章平均质量分 72
about-one
新手小菜鸟哦~
展开
-
KMP算法难点解析
当我们实现在文本中寻找是否有特定的文本出现,我们需要实现文本匹配算法。比如在文本:aabaabaaf 中,我们要查询是否有文本:aabaaf出现。关于暴力求解,我就不再过多赘述,直接进入正题。关于前后缀不了解的同学,我会简略说明。前缀:是指不包含最后一个字符的所有以第一个字符开头的连续子串。后缀:是指不包含第一个字符的所有以最后一个字符结尾的连续子串。如aabaa:前缀:a,aa,aab,aaba(从前向后)后缀:a, aa , baa , abaa(从后向前)我们使用上文的列子 eg:对于a原创 2024-04-21 20:01:17 · 291 阅读 · 0 评论 -
二叉树oj题
思路:题目给出判断subroot树是否为root树的子树,也就是说root中的可能存在一个和subroot一样的子树结构一样的子树。那么我们是否也可以参照题目:相同的树,其中的思路,当我们每遍历一个root的节点,我们就去判断是否与subroot相同。二叉树如果是平衡二叉树的话,那么它必须要满足:最小的子树是平衡的,而每往上的节点的也需要是平衡的。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。的,因此当我们同时进行遍历的时候,两棵树都节点应该是。的某个节点和这个节点的所有后代节点。原创 2024-02-15 20:10:26 · 318 阅读 · 1 评论 -
栈与队列算法专题
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。遇到运算符时,取出栈顶元素p2,然后再取出栈顶元素p1,p2为运算符的右值,p1为左值,得出的结果入栈,重复此操作,直至将表达式遍历完成,最后的结果就是栈留下的最后一个元素。我们由题目得知,有两个数组,一个为入栈数组,一个为出栈数组,判断出栈数组,是否符合入栈数组。原创 2023-12-08 14:52:38 · 785 阅读 · 1 评论 -
# 贪心:分发糖果
当一拿到此题,我们第一个想法就是,一次遍历,并且同时兼顾两边来作出此题,当时当我们尝试过后,就会发现并不可行。这是因为我们的两个结果都是只对比了一边的结果,同一下标的最大糖果数,代表着是最合理的数量。大的结果,明显符合结果:[87 ,72 ,12 ],72要小与87,同时要大于12;第一个,小于第三个,此时第三的孩子的糖果数量都是未知的,我们很难去判断。第二次比较:87>51,所以87的糖果比51的多一个;第一次比较:72>12,72的糖果比12的多一个;第三次比较:87=87,最左边的87的糖果为1;原创 2024-03-19 12:53:09 · 362 阅读 · 0 评论