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

有哪些做室内设计好用的网站有哪些找人做网站如何担保

有哪些做室内设计好用的网站有哪些,找人做网站如何担保,在线网页制作diy,做vi的图有网站吗随想录日记part11 t i m e #xff1a; time#xff1a; time#xff1a; 2024.03.04 主要内容#xff1a;今天的主要内容是深入了解栈和队列中比较难的题录类型#xff1a;滑动窗口最大值与前 K K K 个高频元素#xff0c;最后对于这三天学习的队列和栈的知识进行总结。…随想录日记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],k3 输出: [ 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 ~   731 ~   [3 ~   -1 ~   -3] ~   5 ~   3 ~   6 ~   731 ~   3 ~   [-1 ~   -3 ~   5] ~   3 ~   6 ~   751 ~   3 ~   -1 ~  [-3 ~   5 ~   3] ~   6 ~   751 ~   3 ~   -1 ~   -3 ~   [5 ~   3 ~   6] ~   761 ~   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 {DequeInteger 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],k2 输出: [ 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为对应出现次数MapInteger,Integer mapnew HashMap();for( int num:nums){//计算数字出现的频率map.put(num,map.getOrDefault(num,0)1);}//出现次数按从队头到队尾的顺序是从小到大排,出现次数最低的在队头(相当于小顶堆)PriorityQueueint[] pq new 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[] temnew int[k];for(int ik-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://www.dnsts.com.cn/news/66331.html

相关文章:

  • 大连网站设计企业推广费计入什么科目
  • 郑州汉狮专业做网站公司济南润尔网站建设技术公司
  • 企业官网的重要性全网seo是什么意思
  • 越秀低价网站建设dz网站恢复数据库
  • 找建站公司织梦高清电影网站模板
  • 服务器迁移对做网站的影响十大免费行情软件下载网站
  • 个人网站建设在哪里超市网上商城
  • 黑龙江省建设教育网站appserv wordpress
  • 福田我要做网站优化比较好wordpress the content
  • 长春网站建设技术支持wordpress加载不同模板
  • asp网站建设 文献网上智慧团建登录入口
  • 如何修改网站发布时间wordpress标题字体
  • 网站建设判断题网站建设与管理的过程
  • 重庆开县网站建设公司南宁 建网站
  • 邀约网站怎么做请柬梯子
  • 马关住房和城乡建设局网站做企业网站用什么cms好
  • 网站建设与维护教学视频教程建网站难吗
  • 360网站排名优化该产品在英文站及多语言网站
  • 大学生个人网站怎么做天津建设工程信息网怎么上传资质企业
  • 福建省龙岩市建设培训中心网站建设工程合同的形式
  • 做盗版影视网站临沂中文网站建设
  • 空间网站模板比wordpress还好
  • 进贤县住房和城乡建设局网站做网站被用作非法用途
  • 无锡建站电话360官网首页入口
  • 网站建设有哪些家美发店网站源码
  • 免费样机素材网站北京网站建设公司如何排版
  • 昆明网站建设方案策划如何制作企业宣传片视频
  • ui设计作品网站全网营销公司有哪些
  • 中国建设银行官方招聘网站一级a做爰小说免费网站
  • 网站被攻击了怎么办一站式海外推广平台