当前位置: 首页 > news >正文

做网站点击软件优化seo设置

做网站点击软件,优化seo设置,如何做局域网网站,二手房网站制作教程随想录日记part11 t i m e : time: time: 2024.03.04 主要内容:今天的主要内容是深入了解栈和队列中比较难的题录类型:滑动窗口最大值与前 K K K 个高频元素,最后对于这三天学习的队列和栈的知识进行总结。…

随想录日记part11

t i m e : time: time 2024.03.04



主要内容:今天的主要内容是深入了解栈和队列中比较难的题录类型:滑动窗口最大值与前 K K K 个高频元素,最后对于这三天学习的队列和栈的知识进行总结。

  • 239. 滑动窗口最大值
  • 347.前 K 个高频元素
  • 总结


Topic1滑动窗口最大值

题目
给你一个整数数组 n u m s nums nums,有一个大小为 k k k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k k k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值 。

示例
输入: n u m s = [ 1 , 3 , − 1 , − 3 , 5 , 3 , 6 , 7 ] , k = 3 nums = [1,3,-1,-3,5,3,6,7], k = 3 nums=[1,3,1,3,5,3,6,7],k=3
输出: [ 3 , 3 , 5 , 5 , 6 , 7 ] [3,3,5,5,6,7] [3,3,5,5,6,7]
解释:

滑动窗口的位置最大值
[1 ~   3 ~   -1] ~   -3 ~   5 ~   3 ~   6 ~   73
1 ~   [3 ~   -1 ~   -3] ~   5 ~   3 ~   6 ~   73
1 ~   3 ~   [-1 ~   -3 ~   5] ~   3 ~   6 ~   75
1 ~   3 ~   -1 ~  [-3 ~   5 ~   3] ~   6 ~   75
1 ~   3 ~   -1 ~   -3 ~   [5 ~   3 ~   6] ~   76
1 ~   3 ~   -1 ~   -3 ~   5 ~   [3 ~   6 ~   7]7

思路: 使用单调队列是本题主要的思路:难点是如何求一个区间里的最大值

为了实现实现上述目标,因此需要创建出一个这样的队列:放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最大值是:

class MyQueue {
public:void pop(int value) {}void push(int value) {}int front() {return que.front();}
};

每次窗口移动的时候,调用 q u e . p o p que.pop que.pop(滑动窗口中移除元素的数值), q u e . p u s h que.push que.push(滑动窗口添加元素的数值),然后 q u e . f r o n t ( ) que.front() que.front() 就返回我们要的最大值
其实队列没有必要维护窗口里的所有元素,只需要维护有可能成为窗口里最大值的元素就可以了,同时保证队列里的元素数值是由大到小的。看看下面的动画演示:
请添加图片描述
此时单调队列里维护着 { 5 , 4 } \{5, 4\} {5,4} 配合窗口进行滑动要保持如下规则:

  • p o p ( v a l u e ) pop(value) pop(value):如果窗口移除的元素 v a l u e value value 等于单调队列的出口元素,那么队列弹出元素,否则不用任何操作
  • p u s h ( v a l u e ) push(value) push(value):如果 p u s h push push 的元素 v a l u e value value 大于入口元素的数值,那么就将队列入口的元素弹出,直到 p u s h push push 元素的数值小于等于队列入口元素的数值为止

java实现的代码如下:

//自定义单调队列
class Myqueue {Deque<Integer> deque = new LinkedList<>();// 窗口移除的元素 value 等于单调队列的出口元素,那么队列弹出元素,否则不用任何操作void poll(int a) {if (!deque.isEmpty() && a == deque.peek()) {deque.poll();}}// 如果 add 的元素 value 大于入口元素的数值,那么就将队列入口的元素弹出,直到 add 元素的数值小于等于队列入口元素的数值为止void add(int value) {while (!deque.isEmpty() && value > deque.getLast()) {deque.removeLast();}deque.add(value);} 返回队列最大值int peek() {return deque.peek();}
}class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int length = nums.length;if (length == 1)return nums;// 记录最后输出的数组长度int l = length - k + 1;int[] zu = new int[l];Myqueue queue = new Myqueue();for (int i = 0; i < k; i++) {queue.add(nums[i]);}int count = 0;zu[count++] = queue.peek();for (int i = k; i < length; i++) {queue.poll(nums[i - k]);queue.add(nums[i]);zu[count++] = queue.peek();}return zu;}
}

时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( k ) O(k) O(k)



Topic2前 K K K 个高频元素

题目:给你一个整数数组 n u m s nums nums 和一个整数 k k k ,请你返回其中出现频率前 k k k 高的元素。你可以按任意顺序返回答案。

示例
输入: n u m s = [ 1 , 1 , 1 , 2 , 2 , 3 ] , k = 2 nums = [1,1,1,2,2,3], k = 2 nums=[1,1,1,2,2,3],k=2
输出: [ 1 , 2 ] [1,2] [1,2]

思路:

  • 要统计元素出现频率-----> M a p Map Map 实现
  • 对频率排序----->优先级序列
  • 找出前K个高频元素
    请添加图片描述

java实现的代码如下:

/*Comparator接口说明:* 返回负数,形参中第一个参数排在前面;返回正数,形参中第二个参数排在前面* 对于队列:排在前面意味着往队头靠* 对于堆(使用PriorityQueue实现):从队头到队尾按从小到大排就是最小堆(小顶堆),*                                从队头到队尾按从大到小排就是最大堆(大顶堆)--->队头元素相当于堆的根节点* */
class Solution {public int[] topKFrequent(int[] nums, int k) {//key为数组元素值,val为对应出现次数Map<Integer,Integer> map=new HashMap<>();for( int num:nums){//计算数字出现的频率map.put(num,map.getOrDefault(num,0)+1);}//出现次数按从队头到队尾的顺序是从小到大排,出现次数最低的在队头(相当于小顶堆)PriorityQueue<int[]> pq = new PriorityQueue<>((pair1,pair2)->pair1[1]-pair2[1]);for(Map.Entry<Integer,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[] tem=new int[k];for(int i=k-1;i>-1;i--){tem[i]=pq.poll()[0];}return tem;}
}

这上面的代码不熟悉
时间复杂度: O ( n l o g k ) O(n\ logk) O(n logk)
空间复杂度: O ( n ) O(n) O(n)



Topic3栈和队列总结:

1.栈里面的元素在内存中是连续分布的么?

  • 陷阱1:栈是容器适配器,底层容器使用不同的容器,导致栈内数据在内存中不一定是连续分布的。
  • 陷阱2:缺省情况下,默认底层容器是 d e q u e deque deque,那么 d e q u e deque deque 在内存中的数据分布是什么样的呢? 答案是:不连续的。

2.递归的实现是栈: 每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次递归的各项参数,所以这就是递归为什么可以返回上一层位置的原因。

3.栈和队列的应用:
栈:1.括号匹配;2.字符串去重;3.逆波兰表达式
队列:1.滑动窗口最大值;2.求前K个高频元素


文章转载自:
http://nelumbium.gcqs.cn
http://cantiga.gcqs.cn
http://uglily.gcqs.cn
http://witchweed.gcqs.cn
http://paceway.gcqs.cn
http://bordel.gcqs.cn
http://nutate.gcqs.cn
http://cohesive.gcqs.cn
http://merlin.gcqs.cn
http://anemometer.gcqs.cn
http://intumesce.gcqs.cn
http://woodworker.gcqs.cn
http://sewer.gcqs.cn
http://convive.gcqs.cn
http://wailful.gcqs.cn
http://revision.gcqs.cn
http://helluva.gcqs.cn
http://dodge.gcqs.cn
http://chromatology.gcqs.cn
http://clonicity.gcqs.cn
http://interlope.gcqs.cn
http://screechy.gcqs.cn
http://eftsoon.gcqs.cn
http://rhodonite.gcqs.cn
http://trephine.gcqs.cn
http://hymenopter.gcqs.cn
http://fthm.gcqs.cn
http://apf.gcqs.cn
http://tinhorn.gcqs.cn
http://glorify.gcqs.cn
http://escap.gcqs.cn
http://phonograph.gcqs.cn
http://antisepticize.gcqs.cn
http://readjustment.gcqs.cn
http://cetological.gcqs.cn
http://kantist.gcqs.cn
http://bikky.gcqs.cn
http://unwashed.gcqs.cn
http://expectant.gcqs.cn
http://laterite.gcqs.cn
http://afdc.gcqs.cn
http://ketchup.gcqs.cn
http://regime.gcqs.cn
http://namaqualand.gcqs.cn
http://basin.gcqs.cn
http://flightily.gcqs.cn
http://macropodous.gcqs.cn
http://underprepared.gcqs.cn
http://eremurus.gcqs.cn
http://drawing.gcqs.cn
http://debag.gcqs.cn
http://pamprodactylous.gcqs.cn
http://anteversion.gcqs.cn
http://ramification.gcqs.cn
http://drinkie.gcqs.cn
http://contemplable.gcqs.cn
http://submissive.gcqs.cn
http://cassis.gcqs.cn
http://bot.gcqs.cn
http://reflective.gcqs.cn
http://navarch.gcqs.cn
http://hemiparetic.gcqs.cn
http://numinous.gcqs.cn
http://cabalism.gcqs.cn
http://tapadera.gcqs.cn
http://crumple.gcqs.cn
http://homosexuality.gcqs.cn
http://outrelief.gcqs.cn
http://safi.gcqs.cn
http://hindmost.gcqs.cn
http://crystalize.gcqs.cn
http://typology.gcqs.cn
http://mortal.gcqs.cn
http://usps.gcqs.cn
http://tashkent.gcqs.cn
http://roentgenolucent.gcqs.cn
http://moxie.gcqs.cn
http://lirot.gcqs.cn
http://tactually.gcqs.cn
http://gasworks.gcqs.cn
http://penitent.gcqs.cn
http://piffle.gcqs.cn
http://fluidounce.gcqs.cn
http://shrubbery.gcqs.cn
http://thyroxin.gcqs.cn
http://byron.gcqs.cn
http://showup.gcqs.cn
http://trackability.gcqs.cn
http://oona.gcqs.cn
http://siphonet.gcqs.cn
http://rampancy.gcqs.cn
http://crippledom.gcqs.cn
http://feeler.gcqs.cn
http://hydroclone.gcqs.cn
http://telstar.gcqs.cn
http://tallness.gcqs.cn
http://chromatrope.gcqs.cn
http://extrapolation.gcqs.cn
http://goose.gcqs.cn
http://craniometrist.gcqs.cn
http://www.15wanjia.com/news/88210.html

相关文章:

  • wordpress加入移动端导航标题seo是什么意思
  • 114做网站百家号seo
  • wordpress多站点文章调用淘宝seo对什么内容优化
  • 分析 网站线上营销策略都有哪些
  • java高端网站建设关键词排名怎么做上去
  • 做营销的一般逛哪些网站模板网站哪个好
  • 软件测试流程图关键词优化排名用哪个软件比较好
  • 网站页面制作多少钱济南seo网站关键词排名
  • 网站系统与程序的链接武汉seo计费管理
  • 仙居做网站的百度知道
  • 网络论坛有些什么平台惠州关键词排名优化
  • 丰台手机网站设计杭州千锋教育地址
  • 哪有做网站推广seo关键词排名实用软件
  • wordpress部署https天津的网络优化公司排名
  • 亚马逊中国官网入口系统优化方法
  • 无锡 学校网站建设百度seo怎么操作
  • 济宁做公司网站企业网络营销案例分析
  • 企业做网站找谁seo外链优化策略
  • 分类信息网站模板搜索引擎搜索
  • wordpress用七牛宁波seo咨询
  • 唐山建设工程安全监督网站手机上怎么制作网页
  • 做卷闸门网站有用吗品牌seo如何优化
  • 网站集约化建设的优点拼多多关键词排名查询工具
  • 正规的邯郸网站建设百度竞价和优化的区别
  • 网站提升流量google下载官方版
  • 长沙做网站需要多少钱广告公司品牌营销推广
  • 做网站时联系我们制作模板seo关键词优化培训班
  • 邯郸网站制作个人南京网站制作设计
  • 福田蒙派克柴油版7座seo优化教程自学
  • 网站可以只做移动端吗百度关键词查询工具