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

公司网站开发说明介绍有没有专门做二手电脑的网站

公司网站开发说明介绍,有没有专门做二手电脑的网站,精准扶贫建设网站的目的,如何开发软件程序leetcode 239. 滑动窗口最大值、347.前 K 个高频元素 leecode 239. 滑动窗口最大值 题目链接 :https://leetcode.cn/problems/sliding-window-maximum/description/ 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的…
leetcode 239. 滑动窗口最大值、347.前 K 个高频元素
leecode 239. 滑动窗口最大值
题目链接 :https://leetcode.cn/problems/sliding-window-maximum/description/
题目

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

示例 1:
输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置 最大值


[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7

示例 2:
输入:nums = [1], k = 1
输出:[1]

提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
1 <= k <= nums.length

解题思路

这道题是单调队列的应用,本来试着直接解出来,但是一直有bug,然后看了题解后发现是单调队列的应用。
单调队列:队列元素之间的关系具有单调性(从队首到队尾单调递增/递减),队首和队尾都可以进行入队出队(即插入删除)操作,本质是由双端队列deque实现。
通常适合解决动态小区间中寻找极值问题。
可以模拟单调递减队列(类比单调栈)
依次加入7,8,6,2,5,五次操作后队内元素排列情况:
1:7
2:8
3:8 6
4:8 6 2
5:8 6 5

1:队内为空,7入队

2:第二个元素 8 > 7 ,7出队 ,8入队

3:第三个元素 6 < 8 , 6入队

4:第四个元素 2 < 6, 2入队

5:第五个元素 5 > 2, 2出队, 5 < 6, 5入队。
这道题的具体实现代码和详细注释如:

class MyQueue {Deque<Integer> deque = new LinkedList<>();//弹出元素时,比较当前要弹出的数值是否等于队列出口的数值,如果相等则弹出//同时判断队列当前是否为空void poll(int val) {if (!deque.isEmpty() && val == deque.peek()) {deque.poll();}}//添加元素时,如果要添加的元素大于入口处的元素,就将入口元素弹出//保证队列元素单调递减//比如此时队列元素3,1,2将要入队,比1大,所以1弹出,此时队列:3,2void add(int val) {while (!deque.isEmpty() && val > deque.getLast()) {deque.removeLast();}deque.add(val);}//队列队顶元素始终为最大值int peek() {return deque.peek();}
}class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if (nums.length == 1) {return nums;}int len = nums.length - k + 1;//存放结果元素的数组int[] res = new int[len];int num = 0;//自定义队列MyQueue myQueue = new MyQueue();//先将前k的元素放入队列for (int i = 0; i < k; i++) {myQueue.add(nums[i]);}res[num++] = myQueue.peek();for (int i = k; i < nums.length; i++) {//滑动窗口移除最前面的元素,移除是判断该元素是否放入队列myQueue.poll(nums[i - k]);//滑动窗口加入最后面的元素myQueue.add(nums[i]);//记录对应的最大值res[num++] = myQueue.peek();}return res;}
}//runtime:43 ms
//memory:58.2 MB
知识点

栈,队列,单调队列

注意事项

怎么使用单调队列,单调队列怎么维护队列的值

相关题目

76.最小覆盖子串

leecode 347.前 K 个高频元素
题目链接 :https://leetcode.cn/problems/top-k-frequent-elements/description/
题目

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

示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]

示例 2:
输入: nums = [1], k = 1
输出: [1]

提示:
1 <= nums.length <= 105
k 的取值范围是 [1, 数组中不相同的元素的个数]
题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的

进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。

解题思路

这道题是优先队列的应用。这道题用哈希表+优先队列,我也尝试了挺久的,后来直接看题解了。主要是对优先队列的使用不熟悉。这里介绍一下优先队列。
首先要注意的就是别与队列(queue)搞混了,队列是一种先进先出(First in First out,FIFO)的数据类型。每次元素的入队都只能添加到队列尾部,出队时从队列头部开始出。
优先级队列(priority_queue)其实,不满足先进先出的条件,更像是数据类型中的“堆”。优先级队列每次出队的元素是队列中优先级最高的那个元素,而不是队首的元素。这个优先级可以通过元素的大小等进行定义。比如定义元素越大优先级越高,那么每次出队,都是将当前队列中最大的那个元素出队。
那这道题的具体实现和代码注释如下,建议好好看看优先队列相关的部分:

class Solution {//:基于大顶堆实现public int[] topKFrequent1(int[] nums, int k) {Map<Integer,Integer> map = new HashMap<>(); //key为数组元素值,val为对应出现次数for (int num : nums) {map.put(num, map.getOrDefault(num,0) + 1);}//在优先队列中存储二元组(num, cnt),cnt表示元素值num在数组中的出现次数//出现次数按从队头到队尾的顺序是从大到小排,出现次数最多的在队头(相当于大顶堆)PriorityQueue<int[]> pq = new PriorityQueue<>((pair1, pair2) -> pair2[1] - pair1[1]);for (Map.Entry<Integer, Integer> entry : map.entrySet()) {//大顶堆需要对所有元素进行排序pq.add(new int[]{entry.getKey(), entry.getValue()});}int[] ans = new int[k];for (int i = 0; i < k; i++) { //依次从队头弹出k个,就是出现频率前k高的元素ans[i] = pq.poll()[0];}return ans;}
知识点

栈,队列,优先队列

注意事项

怎么使用有点队列,如何使用优先队列去排序,

相关题目
  1. 数组中的第K个最大元素
http://www.yayakq.cn/news/776821/

相关文章:

  • 求助如何做网站推广网站一键制作
  • 沭阳网站定制创建网站的注意事项
  • 搭建网站费用网页图片排版布局
  • c net 做网站好吗全自动网站制作系统
  • 营销型网站建设推荐乐云seo哪个公司的网络比较稳定
  • 响应网官方网站湖南省建设厅官网查询
  • 网站的ns记录网页制作素材动物
  • 洛阳公司做网站中山做网站优化
  • 淮安网站开发工程师招聘网wordpress建站行吗
  • 网站建设技术包括哪些网站建设分为
  • 软工毕设做网站天津网络排名优化
  • 申请做网站好123上网主页
  • 浙江学院网站建设上海seo网站优化软件
  • 域名注册的网站都有哪些营销型商务网站
  • 商务网站建设实验书上海商城网站建设公司
  • 上海工商局注册公司官网宁波免费seo排名优化
  • 哪个网站做不锈钢好商务网站建设策划思路
  • 合肥网站搜索优化云海建设工程有限公司网站
  • 学校网站 功能找人做网站属于了解些什么呢
  • 专业网站建设服务公司哪家好我做微信淘宝客网站
  • 网站如何做网络推广专门做汽车内饰的网站
  • 个人网站能允许做哪些熟练掌握网站开发技术
  • 网站建设软件dw网站建设动画代码
  • 网站院长信箱怎么做智能建造专业就业前景
  • 遵义网站建设服务网站如何进行seo
  • 网站建设地址北京昌平网站建设企业网站制作平台
  • 旅行网站定制公司猎聘网网站建设目标
  • 外贸多语种网站推广西宁市建设局官方网站
  • 济宁网站定制公司烟台网络科技有限公司
  • 西宁最好网站建设公司哪家好全球创新设计