摘要:
维护定长窗口内前K大/小值 K=1 当K=1的时候,就是我们非常熟悉的滑动窗口问题,用一个单调队列来维护窗口最值即可。 K>1 K > 1的时候,单调队列就不管用了,因为他令元素出队的操作,会丢失部分信息。 例如,维护前3大的元素: 11 12 10 5 我们会创建一个递减的单调队列,但是12入队的 阅读全文
摘要:
lower_bound/upper_bound的重载 升序容器,正常使用 在一个升序的容器当中,lower_bound是寻找第一个大于等于target的目标; upper_bound是寻找第一个大于target的目标,那么,他们的实现大致就是这样子的: lower_bound大致实现 int fun 阅读全文
摘要:
STL容器的erase erase的时候,我们既可以传入一个Iterator,也可以传入一个具体的值,顺序容器不支持用值,关联容器支持。 如果是multiset multimap 要注意,如果我们用具体的值去删,会把所有的记录都删掉,用Iterator去删除才能精确地删除我们想要的某个具体值。 阅读全文
摘要:
递归与循环的博弈:何时在递归中拥抱循环,何时避免? 在算法设计中,递归和循环这对"孪生兄弟"常常让开发者陷入选择困境。很多程序员都曾有类似的困惑:"明明使用了递归,为什么还需要循环?"、"循环里套递归会不会导致重复计算?"。本文将通过具体案例,为您揭开这对组合的神秘面纱。 一、递归与循环的基因解码 阅读全文
摘要:
C++ string查找方法 内容 在 C++ 中,std::string 提供了多种方法获取特定字符或子字符串的位置。以下是常见操作的详细说明和示例: 1. 查找字符的首次出现位置 使用 find() 方法获取字符第一次出现的索引: #include <string> #include <iost 阅读全文