96SEO 2026-02-20 04:59 0
。

这种特性使得单调队列在处理一些问题时非常高效#…简要介绍一下单调队列和优先级队列的不同
元素顺序的处理单调队列中元素的顺序是单调的也就是说队列中的元素按照特定的单调性递增或递减排列。
这种特性使得单调队列在处理一些问题时非常高效例如寻找滑动窗口中的最大值或最小值。
优先队列则根据元素的优先级进行排序优先级高的元素先出队。
优先队列并不保证元素的单调性。
入队和出队的操作在单调队列中元素可以从队尾入队但出队操作只能在队首进行。
这是因为单调队列需要保持其单调性所以新加入的元素需要放在合适的位置以维持这种单调性。
优先队列则允许元素从任意位置入队出队操作则总是发生在优先级最高的元素上。
队列长度单调队列的长度取决于输入数据的合法性如果输入数据不满足单调性要求那么队列长度就可能为0。
而优先队列的长度则始终与输入数据的数量等同因为所有输入数据都会被放入队列中只是出队的顺序会根据优先级有所不同。
这道题有点难度,我们如果使用暴力求解的话是跑不过的,暴力方式就是遍历全部的数组,再遍历每K个元素的滑动窗口,分别找出最大值放入返回数组,这里我们不使用这个方式.
add方法:如果队尾元素比传入元素小,删除该元素,保证前方元素都大于我要传入的元素,从而保证单调队列的单调性
peek方法:因为单调队列维护了队头的最大元素,peek用来返回队头元素
首先创建单调队列,先将前k个元素传入单调队列,获取其最大值,对k到数组结束的元素进行以下处理,先poll前k个元素,加入新的元素,比较得到最大值,最后返回最大值数组即可.
valque.getLast()){que.removeLast();}que.add(val);}int
0;ik;i){que.add(nums[i]);}res[num]
k;ilen;i){que.poll(nums[i-k]);que.add(nums[i]);res[num]
首先创建一个map,key用来放置元素,value用来存放出现频率,这题我们就用到了优先级队列了,因为我们想用低于快排的时间复杂度解决问题,我们就只能使用大顶堆或小顶堆的数据结构,维护一个k个元素的堆来解决问题,最后将前k个元素依次pop出来即可.(这里为了简化代码使用了lambda表达式)
HashMap();//key为数组元素值,val为对应出现次数for(int
num:nums){map.put(num,map.getOrDefault(num,0)1);}//在优先队列中存储二元组(num,cnt),cnt表示元素值num在数组中的出现次数//出现次数按从队头到队尾的顺序是从大到小排,出现次数最多的在队头(相当于大顶堆)PriorityQueueint[]
pair2)-pair2[1]-pair1[1]);for(Map.EntryInteger,Integer
entry:map.entrySet()){//大顶堆需要对所有元素进行排序pq.add(new
int[]{entry.getKey(),entry.getValue()});}int[]
i0;ik;i){//依次从队头弹出k个,就是出现频率前k高的元素ans[i]
HashMap();//key为数组元素值,val为对应出现次数for(int
num:nums){map.put(num,map.getOrDefault(num,0)1);}//在优先队列中存储二元组(num,cnt),cnt表示元素值num在数组中的出现次数//出现次数按从队头到队尾的顺序是从小到大排,出现次数最低的在队头(相当于小顶堆)PriorityQueueint[]
PriorityQueue((pair1,pair2)-pair1[1]-pair2[1]);for(Map.EntryInteger,Integer
entry:map.entrySet()){//小顶堆只需要维持k个元素有序if(pq.size()k){//小顶堆元素个数小于k个时直接加pq.add(new
int[]{entry.getKey(),entry.getValue()});}else{if(entry.getValue()pq.peek()[1]){//当前元素出现次数大于小顶堆的根结点(这k个元素中出现次数最少的那个)pq.poll();//弹出队头(小顶堆的根结点),即把堆里出现次数最少的那个删除,留下的就是出现次数多的了pq.add(new
int[]{entry.getKey(),entry.getValue()});}}}int[]
ik-1;i0;i--){//依次弹出小顶堆,先弹出的是堆的根,出现次数少,后面弹出的出现次数多ans[i]
x.getValue();pq.offer(tmp);if(pq.size()
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback