算法学习
文章平均质量分 84
lsslcj
这个作者很懒,什么都没留下…
展开
-
单调栈(C++)
单调栈,即栈中元素是单调递增的或是单调递减的,是一个比较好用的数据结构.原创 2024-03-28 08:00:00 · 1473 阅读 · 0 评论 -
轮换数组(环形以及翻转)
原理是简单的,将所有元素向右移动k位,则末尾的k%n个元素就到了前端,则先整体翻转,再分别将。对于回到起点的情况就均自增1即可,不用管需要循环多少次,总之n个元素都要换一次。个人的解法是官方题解的方法二,就是环那个,但没有用数学简化。,将数组中的元素向右轮转。原创 2024-03-05 20:18:13 · 254 阅读 · 0 评论 -
验证子序列(动态规划)
以上数量级的输入,则不可能遍历这么多次T字符串,为了节省时间,我们可以对T进行预处理,转而遍历较短的S串。那么我们需要知道,在T的某个位置i后的某一个字符j在哪个位置第一次出现,如此可以直接跳转到那个位置,继续匹配S串的下一个字符。在后续验证的时候,可以用start记录开始匹配的位置,每次匹配完成都要在匹配后的下一个位置开始,否则可能会无限循环,给出错误的判断。如果当前位置是字符j,则更新为当前位置,如果不是,则更新为后一位的j字符位置,这就是转移方程。亿,你需要依次检查它们是否为 T 的子序列。原创 2024-03-14 22:27:20 · 489 阅读 · 1 评论 -
Boyer–Moore投票算法
显而易见,如果一个人拥有的选票比其它所有人加起来的选票还要多的话,这个候选人将会赢得这场“战争”,当混乱结束,最后剩下的那个代表(可能会有多个)将会来自多数人所站的阵营。 更通俗的说,众数的性质决定了它的出现次数要多于其余数字,如果最终count为负数或为0,则说明不存在众数,在这种情况下,candidate是一个随机数。简化:只需要记住候选者的名字和目前票数,每遇到一个不同候选者,目前票数-1,反之则+1,当票数归0时,更换候选者为当前候选者,并将票数置为1。 减治的思想,即如果原集合。原创 2024-03-04 12:39:51 · 1278 阅读 · 0 评论